我想知道异步迭代器的一些可能的现实世界使用示例,这是 ECMAScript 2018 的一部分。
对于可读流,它看起来很有用,因为我们可以使用 new 轻松迭代它们for await of
。实际上,在 Node.js 中,可读流已经有一个Symbol.asyncIterator
作为实验特性实现的属性:
const fs = require('fs');
async function print(readable) {
readable.setEncoding('utf8');
let data = '';
for await (const k of readable) {
data += k;
}
console.log(data);
}
print(fs.createReadStream('file')).catch(console.log);
但是我想不出其他一些好的用法。
至于同步迭代器,我们有像 Array 或 Map 这样的原生对象,它们包含Symbol.iterator
自 ES2015 以来的属性,使它们可迭代。在这种情况下,我认为它们的用途非常广泛且易于理解。
任何想法表示赞赏。