Symbol.asyncIterator - JavaScript 编辑
Symbol.asyncIterator
符号指定了一个对象的默认异步迭代器。如果一个对象设置了这个属性,它就是异步可迭代对象,可用于for await...of
循环。
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
描述
Symbol.asyncIterator
是一个用于访问对象的@@asyncIterator
方法的内建符号。一个异步可迭代对象必须要有Symbol.asyncIterator
属性。
Symbol.asyncIterator 属性的属性特性: | |
---|---|
writable | false |
enumerable | false |
configurable | false |
示例
自定义异步可迭代对象
你可以通过设置[Symbol.asyncIterator]
属性来自定义异步可迭代对象。
const myAsyncIterable = new Object();
myAsyncIterable[Symbol.asyncIterator] = async function*() {
yield "hello";
yield "async";
yield "iteration!";
};
(async () => {
for await (const x of myAsyncIterable) {
console.log(x);
// expected output:
// "hello"
// "async"
// "iteration!"
}
})();
内建异步可迭代对象
目前没有默认设定了[Symbol.asyncIterator]
属性的JavaScript内建的对象。不过,WHATWG(网页超文本应用技术工作小组)Streams会被设定为第一批异步可迭代对象,[Symbol.asyncIterator]
最近已在设计规范中落地。
规范
标准 | 状态 | 注释 |
---|---|---|
ECMAScript 2018 (ECMA-262) Symbol.asyncIterator | Standard |
浏览器兼容性
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.参见
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论