ReadableStreamDefaultController: enqueue() method

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.

Phương thức enqueue() của giao diện ReadableStreamDefaultController đưa một chunk nhất định vào hàng đợi của luồng liên kết.

Cú pháp

js
enqueue(chunk)

Tham số

chunk

Chunk cần đưa vào hàng đợi.

Giá trị trả về

Không có (undefined).

Ngoại lệ

TypeError

Được ném ra nếu enqueue() được gọi khi luồng không thể đọc được, vì nó đã đóng, bị hủy, hoặc bị lỗi, hoặc vì nguồn cơ bản đã yêu cầu đóng nhưng vẫn chưa thực hiện vì còn có các chunk trong hàng đợi để đọc.

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, xem controller.enqueue(string). 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.

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.

js
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

Thông số kỹ thuật
Streams
# ref-for-rs-default-controller-enqueue①

Tương thích trình duyệt

Xem thêm