ReadableStreamDefaultReader
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
Note: This feature is available in Web Workers.
Giao diện ReadableStreamDefaultReader của API Streams biểu diễn một trình đọc mặc định có thể dùng để đọc dữ liệu luồng được cung cấp từ mạng, chẳng hạn như một yêu cầu fetch.
ReadableStreamDefaultReader có thể được dùng để đọc từ một ReadableStream có nguồn nền tảng thuộc bất kỳ kiểu nào, khác với ReadableStreamBYOBReader, vốn chỉ có thể dùng với các luồng có thể đọc có nguồn byte nền tảng.
Lưu ý rằng việc truyền không sao chép từ nguồn nền tảng chỉ được hỗ trợ cho các nguồn byte nền tảng tự động cấp phát bộ đệm.
Nói cách khác, luồng phải được khởi tạo với cả type="bytes" và autoAllocateChunkSize.
Với mọi nguồn nền tảng khác, luồng sẽ luôn đáp ứng các yêu cầu đọc bằng dữ liệu từ hàng đợi nội bộ.
Bộ khởi tạo
ReadableStreamDefaultReader()-
Tạo và trả về một thể hiện đối tượng
ReadableStreamDefaultReader.
Thuộc tính thể hiện
ReadableStreamDefaultReader.closedRead only-
Trả về một
Promiseđược hoàn tất khi luồng đóng, hoặc bị từ chối nếu luồng phát sinh lỗi hay khóa của trình đọc bị giải phóng. Thuộc tính này cho phép bạn viết mã phản hồi khi quá trình streaming kết thúc.
Phương thức thể hiện
ReadableStreamDefaultReader.cancel()-
Trả về một
Promiseđược giải quyết khi luồng bị hủy. Gọi phương thức này báo hiệu rằng phía tiêu thụ không còn quan tâm đến luồng nữa. Đối sốreasonđược cung cấp sẽ được chuyển cho nguồn nền tảng, nguồn này có thể dùng hoặc không dùng nó. ReadableStreamDefaultReader.read()-
Trả về một Promise cung cấp quyền truy cập tới khối dữ liệu tiếp theo trong hàng đợi nội bộ của luồng.
ReadableStreamDefaultReader.releaseLock()-
Giải phóng khóa của trình đọc trên luồng.
Ví dụ
Trong ví dụ sau, một Response giả lập được tạo để truyền các đoạn HTML được tìm nạp từ một tài nguyên khác tới trình duyệt.
Ví dụ này minh họa việc sử dụng ReadableStream kết hợp với 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);
push();
});
}
push();
},
});
return new Response(stream, { headers: { "Content-Type": "text/html" } });
});
Thông số kỹ thuật
| Specification |
|---|
| Streams> # default-reader-class> |