Symbol.asyncIterator

Symbol.asyncIterator 静态数据属性表示众所周知的符号 Symbol.asyncIterator异步可迭代协议查找此符号以获取返回对象异步迭代器的函数。为了使对象成为异步可迭代的,它必须具有 [Symbol.asyncIterator] 键。

试一试

众所周知的符号 Symbol.asyncIterator

Symbol.asyncIterator 的属性
可写
可枚举
可配置

示例

用户定义的异步可迭代

您可以通过在对象上设置 [Symbol.asyncIterator]() 属性来定义您自己的异步可迭代。

js
const myAsyncIterable = {
  async *[Symbol.asyncIterator]() {
    yield "hello";
    yield "async";
    yield "iteration!";
  },
};

(async () => {
  for await (const x of myAsyncIterable) {
    console.log(x);
  }
})();
// Logs:
// "hello"
// "async"
// "iteration!"

在创建 API 时,请记住异步可迭代旨在表示某些可迭代的内容(如数据流或列表),而不是在大多数情况下完全替换回调和事件。

内置异步可迭代

核心 JavaScript 语言中没有异步可迭代的对象。某些 Web API(例如 ReadableStream)默认情况下已设置 Symbol.asyncIterator 方法。

规范

规范
ECMAScript 语言规范
# sec-symbol.asynciterator

浏览器兼容性

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

另请参阅