Node.js nodejs 10异步迭代的实例,例如,它比stream更能解决什么样的问题?

Node.js nodejs 10异步迭代的实例,例如,它比stream更能解决什么样的问题?,node.js,async-await,stream,Node.js,Async Await,Stream,我有一个异步迭代的基本概念,以及与流相比它是如何工作的,例如 对于stream,我将这样编写代码 const stream = fs.createReadStream(filepath); stream.on('data', chunk => { console.log(`Read: ${chunk}`); }); stream.on('end', () => { console.log('EOF'); }); 通过异步迭代,我可以这样编码 const stream = f

我有一个异步迭代的基本概念,以及与流相比它是如何工作的,例如

对于stream,我将这样编写代码

const stream = fs.createReadStream(filepath);
stream.on('data', chunk => {
  console.log(`Read: ${chunk}`);
});
stream.on('end', () => {
  console.log('EOF');
});
通过异步迭代,我可以这样编码

const stream = fs.createReadStream(filepath);
for await (const chunk of stream) {
  console.log(`Read: ${chunk}`);
}
console.log('EOF');
但我还不知道它比传统技术有什么优势

---更新---


我通读了书中的“异步迭代”一章,我仍然觉得异步迭代是一个相当复杂的语言特性。这一章提到了什么样的数据流是异步的。但是我还没有看到WHATWG流的实际用途。

由于nodejs是单线程的,我们不希望阻塞代码,因为IO操作倾向于阻塞它,我们通过异步来避免这种情况。@HarshVishwakarma流代码不会阻塞,除了在处理
结束
时。
async
代码甚至可能需要更多的时间来运行语法隐藏的javascript。@Matt完全同意,这就是为什么我还没有看到使用它的原因。因此,我的问题是,两者之间的差异将是可以忽略不计的:)就个人而言,我最终以某种形式的承诺包装了大多数流,以便它与我的代码的其余部分相适应。所以我现在通常只使用异步API,如果可用的话,我不会做任何花哨的管道。@Matt我实际上做了一些“花哨”的管道,所以我想我会坚持使用stream。