aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/api/readablestream/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/zh-cn/web/api/readablestream/index.html')
-rw-r--r--files/zh-cn/web/api/readablestream/index.html114
1 files changed, 114 insertions, 0 deletions
diff --git a/files/zh-cn/web/api/readablestream/index.html b/files/zh-cn/web/api/readablestream/index.html
new file mode 100644
index 0000000000..445fc134d1
--- /dev/null
+++ b/files/zh-cn/web/api/readablestream/index.html
@@ -0,0 +1,114 @@
+---
+title: ReadableStream
+slug: Web/API/ReadableStream
+tags:
+ - API
+ - Fetch
+ - ReadableStream
+ - 引用
+ - 接口
+translation_of: Web/API/ReadableStream
+---
+<p>{{APIRef("Fetch")}}</p>
+
+<p><a href="https://developer.mozilla.org/zh-CN/docs/Web/API/Streams_API">流操作API</a> 中的<code>ReadableStream</code><span> 接口呈现了一个可读取的二进制流操作。</span><a href="https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API">Fetch API</a><span> 通过 {{domxref("Response")}} 的属性 {{domxref("Body.body", "body")}} 提供了一个具体的 </span><code>ReadableStream</code><span> 对象。</span></p>
+
+<h2 id="构造函数">构造函数</h2>
+
+<dl>
+ <dt>{{domxref("ReadableStream.ReadableStream", "ReadableStream()")}}</dt>
+ <dd>创建并从给定的 Handler 返回一个可读流对象。</dd>
+</dl>
+
+<h2 id="属性">属性</h2>
+
+<dl>
+ <dt>{{domxref("ReadableStream.locked")}} {{readonlyInline}}</dt>
+ <dd>locked 返回这个可读流是否被一个<a href="https://streams.spec.whatwg.org/#locked-to-a-reader" id="ref-for-locked-to-a-reader②">读取器锁定</a>。</dd>
+</dl>
+
+<h2 id="方法">方法</h2>
+
+<dl>
+ <dt>{{domxref("ReadableStream.cancel()")}}</dt>
+ <dd>取消读取流,读取方发出一个信号,表示对这束流失去兴趣。可以传入 reason 参数表示取消原因,这个原因将传回给调用方。</dd>
+ <dt>{{domxref("ReadableStream.getIterator()")}}</dt>
+ <dd>创建一个异步的 ReadableStream 迭代器并将流锁定于其上。一旦流被锁定,其他读取器将不能读取它,直到它被释放。</dd>
+ <dt>{{domxref("ReadableStream.getReader()")}}</dt>
+ <dd>创建一个读取器并将流锁定于其上。一旦流被锁定,其他读取器将不能读取它,直到它被释放。</dd>
+</dl>
+
+<dl>
+ <dt>{{domxref("ReadableStream.pipeThrough()")}}</dt>
+ <dd>提供将当前流管道输出到一个 transform 流或 writable/readable 流对的链式方法。</dd>
+</dl>
+
+<dl>
+ <dt>{{domxref("ReadableStream.pipeTo()")}}</dt>
+ <dd>将当前 ReadableStream 管道输出到给定的 {{domxref("WritableStream")}},并返回一个 promise,输出过程成功时返回 fulfilled,在发生错误时返回 rejected。</dd>
+ <dt>{{domxref("ReadableStream.tee()")}}</dt>
+ <dd><code>tee</code> 方法(tee本意是将高尔夫球放置在球座上)<a href="https://streams.spec.whatwg.org/#tee-a-readable-stream" id="ref-for-tee-a-readable-stream②">tees</a> 了可读流,返回包含两个{{domxref("ReadableStream")}} 实例分支的数组,每个元素接收了相同的传输数据。</dd>
+ <dt>{{domxref("ReadableStream[@@asyncIterator]()")}}</dt>
+ <dd><code>getIterator</code> 方法的别名。</dd>
+</dl>
+
+<h2 id="示例">示例</h2>
+
+<p>下面的例子,创建了一个智能的 {{domxref("Response")}} 来流式化从别的资源处取得的HTML 片段。</p>
+
+<p>它演示了 {{domxref("ReadableStream")}} 与 {{domxref("Uint8Array")}} 的协同用法。</p>
+
+<pre class="brush: js notranslate">fetch("https://www.example.org/").then((response) =&gt; {
+ const reader = response.body.getReader();
+ const stream = new ReadableStream({
+ start(controller) {
+ // 下面的函数处理每个数据块
+ function push() {
+ // "done"是一个布尔型,"value"是一个Unit8Array
+ reader.read().then(({ done, value }) =&gt; {
+ // 判断是否还有可读的数据?
+ if (done) {
+ // 告诉浏览器已经结束数据发送
+ controller.close();
+ return;
+ }
+
+ // 取得数据并将它通过controller发送给浏览器
+ controller.enqueue(value);
+ push();
+ });
+ };
+
+ push();
+ }
+ });
+
+ return new Response(stream, { headers: { "Content-Type": "text/html" } });
+});</pre>
+
+<h2 id="规范">规范</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('Streams','#rs-class','ReadableStream')}}</td>
+ <td>{{Spec2('Streams')}}</td>
+ <td>初始定义</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+<p>{{Compat("api.ReadableStream")}}</p>
+
+<h2 id="相关链接">相关链接</h2>
+
+<ul>
+ <li><a href="https://whatwg-stream-visualizer.glitch.me/">WHATWG Stream Visualiser</a>, for a basic visualisation of readable, writable, and transform streams.</li>
+</ul>