首页 > 解决方案 > 异步迭代器使用的真实示例

问题描述

我想知道异步迭代器的一些可能的现实世界使用示例,这是 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 以来的属性,使它们可迭代。在这种情况下,我认为它们的用途非常广泛且易于理解。

任何想法表示赞赏。

标签: javascriptnode.jsasync-iteratorecmascript-2018

解决方案


推荐阅读