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 的浏览器中加载。