解析 ES10 中的异步迭代器 (AsyncIterator) 及使用方式

阅读时长 3 分钟读完

异步迭代器概念

在 ES10 中,异步迭代器 (AsyncIterator) 是实现了一个[Symbol.asyncIterator]的对象,它可以在迭代过程中返回 Promise 对象,使得迭代过程变为异步的。

实现 AsyncIterator

通过定义一个具有[Symbol.asyncIterator]方法的对象,我们就可以实现一个 AsyncIterator。

在上面的代码中,我们定义了一个包含三个 Promise 的 AsyncIterableExample 对象,通过 yield 返回每个 Promise 的结果。

使用 AsyncIterator

for await...of

可以通过 for await...of 来消费一个 AsyncIterator。

在代码中,我们通过 for await...of 来消费 AsyncIterableExample 对象,并通过 console.log 输出结果。

Promise.all 加上 map

我们也可以将 AsyncIterator 对象通过 Promise.all 加上 map 方法来消费。

在这个例子中,我们将 AsyncIterator 对象通过(await AsyncIterableExampleSymbol.asyncIterator)获取,然后进行map操作,每个 Promise 对象再通过 async/await来获取结果,再通过 Promise.all 来返回最终结果。

结论

通过 AsyncIterator,我们可以通过 几种不同的方法来消费异步迭代对象,使得其更加灵活可用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6711d68dad1e889fe2012159

纠错
反馈