ReadableStreamDefaultController: enqueue() 方法

注意:此功能在 Web Workers 中可用。

enqueue() 方法是 ReadableStreamDefaultController 接口的方法,用于将给定的 入队到关联的流中。

语法

js
enqueue(chunk)

参数

chunk

要入队的块。

返回值

无 (undefined)。

异常

TypeError

如果源对象不是 ReadableStreamDefaultController,则抛出此异常。

示例

在以下简单示例中,使用构造函数创建了一个自定义 ReadableStream(有关完整代码,请参阅我们的 简单随机流示例)。start() 函数每秒生成一个随机文本字符串并将其入队到流中 — 请参阅 controller.enqueue(string)。还提供了一个 cancel() 函数,如果出于任何原因调用了 ReadableStream.cancel(),则可以使用该函数停止生成。

当按下按钮时,生成过程将停止,流将使用 ReadableStreamDefaultController.close() 关闭,并且将运行另一个函数,该函数从流中读取数据。

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);
  },
});

规范

规范
流标准
# ref-for-rs-default-controller-enqueue①

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅