blob: e612632981de8d397088653273cbe0abf5ce6043 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
---
title: ReadableStreamDefaultReader
slug: Web/API/ReadableStreamDefaultReader
translation_of: Web/API/ReadableStreamDefaultReader
---
<p>{{APIRef("Streams")}}{{SeeCompatTable}}</p>
<p><br>
<span class="seoSummary"> <a href="/en-US/docs/Web/API/Streams_API">Streams API</a></span> 的 <strong>ReadableStreamDefaultReader </strong>的接口 表示一个可被用于读取来自网络提供的流数据(例如 fetch 请求)的默认读取器</p>
<h2 id="构造方法">构造方法</h2>
<dl>
<dt><a href="https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/ReadableStreamDefaultReader" title="ReadableStreamDefaultReader()构造函数创建并返回一个ReadableStreamDefaultReader()对象实例。"><code>ReadableStreamDefaultReader()</code></a></dt>
<dd>创建 和 返回 一个 <code>ReadableStreamDefaultReader()</code> 对象实例.</dd>
</dl>
<h2 id="属性">属性</h2>
<dl>
<dt><a href="https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/closed" title="ReadableStream接口的封闭getter属性返回一个承诺,如果流关闭或读取器的锁被释放,则返回承诺;如果流错误则拒绝。"><code>ReadableStreamDefaultReader.closed</code></a><br>
</dt>
<dd>允许你编写 当stream结束时 执行的代码 . 如果这个stream变成关闭状态或者 reader 的锁(lock)被释放 则返回一个状态是 fulfills的 promise,如果这个stream 报错则返回rejects的promise.</dd>
</dl>
<h2 id="方法">方法</h2>
<dl>
<dt><a href="https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/cancel" title="ReadableStreamDefaultReader接口的cancel()方法取消流,表示消费者对流中兴趣的丧失。 所提供的理由参数将被提供给潜在的来源,可能会或可能不会使用它。"><code>ReadableStreamDefaultReader.cancel()</code></a></dt>
<dd>取消这个 stream, 表示对这个stream失去了兴趣. 提供的参数将传递给源source, 可能会也可能不会用到这些参数.</dd>
<dt><a href="https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/read" title="ReadableStreamDefaultReader接口的read()方法返回一个承诺,提供对流内部队列中下一个块的访问。"><code>ReadableStreamDefaultReader.read()</code></a></dt>
<dd>返回一个promise,提供对stream内部队列中下一个块(chunk)访问的promise.</dd>
<dt><a href="https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/releaseLock" title="ReadableStreamDefaultReader接口的releaseLock()方法释放读取器对流的锁定。"><code>ReadableStreamDefaultReader.releaseLock()</code></a></dt>
<dd>释放读取这个stream的锁.</dd>
</dl>
<h2 id="例子">例子</h2>
<p>在下面的例子中, {{domxref("Response")}} 被创建为流 <font><font>HTML片段 fetched 来自其他源.</font></font></p>
<p>它展示了一个 {{domxref("ReadableStream")}} 和一个 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Uint8Array" title="有关这方面的文件尚未编写; 请考虑贡献!"><code>Uint8Array</code></a>组合使用的例子.</p>
<pre class="brush: js">fetch("https://www.example.org/").then((response) => {
const reader = response.body.getReader();
const stream = new ReadableStream({
start(controller) {
// The following function handles each data chunk
function push() {
// "done" is a Boolean and value a "Uint8Array"
return reader.read().then(({ done, value }) => {
// Is there no more data to read?
if (done) {
// Tell the browser that we have finished sending data
controller.close();
return;
}
// Get the data and send it to the browser via the controller
controller.enqueue(value);
}).then(push);
};
push();
}
});
return new Response(stream, { headers: { "Content-Type": "text/html" } });
});
</pre>
<h2 id="产品规格"><font><font>产品规格</font></font></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','#default-reader-class','ReadableStreamDefaultReader')}}</td>
<td>{{Spec2('Streams')}}</td>
<td>初始定义</td>
</tr>
</tbody>
</table>
<h2 id="浏览器兼容性">浏览器兼容性</h2>
{{Compat("api.ReadableStreamDefaultReader")}}
|