From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../web/api/readablestreamdefaultreader/index.html | 144 +++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 files/zh-cn/web/api/readablestreamdefaultreader/index.html (limited to 'files/zh-cn/web/api/readablestreamdefaultreader/index.html') diff --git a/files/zh-cn/web/api/readablestreamdefaultreader/index.html b/files/zh-cn/web/api/readablestreamdefaultreader/index.html new file mode 100644 index 0000000000..499d15013c --- /dev/null +++ b/files/zh-cn/web/api/readablestreamdefaultreader/index.html @@ -0,0 +1,144 @@ +--- +title: ReadableStreamDefaultReader +slug: Web/API/ReadableStreamDefaultReader +translation_of: Web/API/ReadableStreamDefaultReader +--- +

{{APIRef("Streams")}}{{SeeCompatTable}}

+ +


+  Streams API 的 ReadableStreamDefaultReader 的接口 表示一个可被用于读取来自网络提供的流数据(例如 fetch 请求)的默认读取器

+ +

构造方法

+ +
+
ReadableStreamDefaultReader()
+
创建 和 返回 一个 ReadableStreamDefaultReader() 对象实例.
+
+ +

属性

+ +
+
ReadableStreamDefaultReader.closed
+    
+
允许你编写 当stream结束时 执行的代码 . 如果这个stream变成关闭状态或者 reader 的锁(lock)被释放 则返回一个状态是 fulfills的 promise,如果这个stream 报错则返回rejects的promise.
+
+ +

方法

+ +
+
ReadableStreamDefaultReader.cancel()
+
取消这个 stream, 表示对这个stream失去了兴趣. 提供的参数将传递给源source, 可能会也可能不会用到这些参数.
+
ReadableStreamDefaultReader.read()
+
返回一个promise,提供对stream内部队列中下一个块(chunk)访问的promise.
+
ReadableStreamDefaultReader.releaseLock()
+
释放读取这个stream的锁.
+
+ +

例子

+ +

在下面的例子中, {{domxref("Response")}} 被创建为流 HTML片段 fetched 来自其他源.

+ +

它展示了一个 {{domxref("ReadableStream")}} 和一个 Uint8Array组合使用的例子.

+ +
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" } });
+});
+
+ +

产品规格

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Streams','#default-reader-class','ReadableStreamDefaultReader')}}{{Spec2('Streams')}}初始定义
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support +

{{CompatChrome(52.0)}}

+
{{CompatGeckoDesktop("57.0")}}{{CompatUnknown}} +

{{CompatOpera(39)}}

+
{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari Mobile
Basic support{{CompatChrome(52)}}{{CompatChrome(52)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatOperaMobile(39)}}{{CompatUnknown}}
+
-- cgit v1.2.3-54-g00ecf