Node.js nodejs 10异步迭代的实例,例如,它比stream更能解决什么样的问题?
我有一个异步迭代的基本概念,以及与流相比它是如何工作的,例如 对于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
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。