ReadableStreamDefaultController
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 ReadableStreamDefaultController của Streams API đại diện cho một bộ điều khiển cho phép kiểm soát trạng thái và hàng đợi nội bộ của ReadableStream. Các bộ điều khiển mặc định dành cho các luồng không phải là luồng byte.
Hàm khởi tạo
Không có. Các phiên bản ReadableStreamDefaultController được tạo tự động trong quá trình khởi tạo ReadableStream.
Thuộc tính phiên bản
ReadableStreamDefaultController.desiredSizeRead only-
Trả về kích thước mong muốn cần thiết để lấp đầy hàng đợi nội bộ của luồng.
Phương thức phiên bản
ReadableStreamDefaultController.close()-
Đóng luồng liên kết.
ReadableStreamDefaultController.enqueue()-
Đưa một chunk nhất định vào hàng đợi của luồng liên kết.
ReadableStreamDefaultController.error()-
Gây ra lỗi cho mọi tương tác tương lai với luồng liên kết.
Ví dụ
Trong ví dụ đơn giản sau, một ReadableStream tùy chỉnh được tạo bằng hàm khởi tạo (xem ví dụ luồng ngẫu nhiên đơn giản để xem mã đầy đủ). Hàm start() tạo ra một chuỗi văn bản ngẫu nhiên mỗi giây và đưa vào luồng. Một hàm cancel() cũng được cung cấp để dừng việc tạo nếu ReadableStream.cancel() được gọi vì bất kỳ lý do nào.
Lưu ý rằng một đối tượng ReadableStreamDefaultController được cung cấp làm tham số của các hàm start() và pull().
Khi một nút được nhấn, quá trình tạo sẽ dừng, luồng được đóng bằng ReadableStreamDefaultController.close(), và một hàm khác được chạy để đọc lại dữ liệu từ luồng.
let interval;
const stream = new ReadableStream({
start(controller) {
interval = setInterval(() => {
let string = randomChars();
// Add the string to the stream
controller.enqueue(string);
// show it on the screen
let listItem = document.createElement("li");
listItem.textContent = string;
list1.appendChild(listItem);
}, 1000);
button.addEventListener("click", () => {
clearInterval(interval);
fetchStream();
controller.close();
});
},
pull(controller) {
// We don't really need a pull in this example
},
cancel() {
// This is called if the reader cancels,
// so we should stop generating strings
clearInterval(interval);
},
});
Thông số kỹ thuật
| Specification |
|---|
| Streams> # rs-default-controller-class> |