ReadableStreamDefaultReader
Baseline 廣泛可用 *
注意:此功能在 Web Workers 中可用。
ReadableStreamDefaultReader 介面是 Streams API 的一部分,它表示一個預設的讀取器,可用於讀取從網路(例如 fetch 請求)提供的資料流。
ReadableStreamDefaultReader 可用於讀取任何型別的底層資料來源的 ReadableStream(與只能用於具有底層位元組源的可讀流的 ReadableStreamBYOBReader 不同)。
但請注意,僅當底層源是自動分配緩衝區的底層位元組源時,才支援從底層源進行零複製傳輸。換句話說,該流必須在 構造 時同時指定 type="bytes" 和 autoAllocateChunkSize。對於任何其他底層源,流將始終透過內部佇列中的資料來滿足讀取請求。
建構函式
ReadableStreamDefaultReader()-
建立並返回一個
ReadableStreamDefaultReader物件例項。
例項屬性
ReadableStreamDefaultReader.closed只讀-
返回一個
Promise,當流關閉時,該 Promise 會 fulfilled;如果流丟擲錯誤或讀取器的鎖被釋放,則會 rejected。此屬性使您能夠編寫響應流結束的程式碼。
例項方法
ReadableStreamDefaultReader.cancel()-
返回一個
Promise,當流被取消時解析。呼叫此方法表示消費者對該流不再感興趣。提供的reason引數將傳遞給底層源,源可能會也可能不會使用它。 ReadableStreamDefaultReader.read()-
返回一個 Promise,提供對流內部佇列中下一個塊的訪問。
ReadableStreamDefaultReader.releaseLock()-
釋放讀取器對流的鎖定。
示例
在以下示例中,建立了一個人工 Response,用於將從另一個資源獲取的 HTML 片段流式傳輸到瀏覽器。
它演示了 ReadableStream 與 Uint8Array 結合使用的用法。
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);
push();
});
}
push();
},
});
return new Response(stream, { headers: { "Content-Type": "text/html" } });
});
規範
| 規範 |
|---|
| Streams # default-reader-class |
瀏覽器相容性
載入中…