【发布时间】:2019-08-28 10:37:15
【问题描述】:
在 Node.js 项目中,我使用带有可读流的 for await of 循环作为数据源,因此我的代码在概念上如下所示:
for await (const item of readableStream) {
// ...
}
可读流存在于循环之前,即它不是为循环创建的,但它已经存在。现在的重点是我希望能够停止收听此流,即我想从循环中break,但我确实不想关闭可读流。 p>
如果我只是这样做:
for await (const item of readableStream) {
if (condition) {
break;
}
// ...
}
循环按预期停止,但流被关闭。我怎样才能在不关闭流的情况下达到同样的效果?
我不能直接使用on('data'),因为我要执行的操作包括运行async 函数,因此这不起作用。我知道我可以使用Transform 或Writable 流来解决这个问题,但这似乎是我想避免的一些开销。
我想通过for await of 循环来实现吗?如果可以,如何实现?如果不是,我最好的选择是什么?
【问题讨论】:
-
您可以在
data上使用github.com/sindresorhus/p-event 之类的东西。这会产生预期的行为吗? -
这成功了???
-
很高兴它有帮助。我不确定是否有更好的方法,但我怀疑没有。
标签: javascript node.js for-loop async-await stream