此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
AsyncIterator
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年1月.
* Some parts of this feature may have varying levels of support.
AsyncIterator 对象是符合异步迭代器协议的对象,其提供了next() 方法用以返回一个兑现为迭代器结果对象的 promise。AsyncIterator.prototype 对象是一个隐藏的全局对象,所有内置的异步迭代器都继承自它。其提供了[Symbol.asyncIterator]() 方法,该方法返回异步迭代器对象本身,使异步迭代器也异步可迭代。
注意,AsyncIterator不是全局对象,尽管将来会出现异步迭代器辅助方法提案。所有内置异步迭代器共享的AsyncIterator.prototype 对象可以通过以下代码获得:
const AsyncIteratorPrototype = Object.getPrototypeOf( Object.getPrototypeOf(Object.getPrototypeOf((async function* () {})())),);In this article
描述
目前,唯一内置的 JavaScript 异步迭代器是由异步生成器函数返回的AsyncGenerator 对象。还有一些其他的内置异步迭代器存在于 web API 中,例如ReadableStream 的异步迭代器。
每个异步迭代器都有一个不同的原型对象,它定义了特定异步迭代器使用的next() 方法。所有这些原型对象都继承自AsyncIterator.prototype,它提供了一个[Symbol.asyncIterator]() 方法,该方法返回异步迭代器对象本身,使异步迭代器也可异步迭代。
备注:AsyncIterator.prototype 并未实现[Symbol.iterator](),因此默认情况下,异步迭代器不是同步可迭代对象。
实例方法
AsyncIterator.prototype[Symbol.asyncIterator]()返回异步迭代器对象本身。这使异步迭代器对象也可以异步迭代。
示例
>使用异步迭代器作为异步可迭代对象
所有内置异步迭代器都可以异步迭代,因此你可以在for await...of 循环中使用它们:
const asyncIterator = (async function* () { yield 1; yield 2; yield 3;})();(async () => { for await (const value of asyncIterator) { console.log(value); }})();// 输出:1,2,3规范
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-asynciteratorprototype> |