Node.js 如何等待所有节点流完成/结束?
我有一个子节点进程,每24小时在CRON上运行一次。当流程开始时,它读取一些排队的数据,并将这些数据推送到某个转换流中。然后,该流充当反向多路复用器,并将该流拆分为多个流,这些流最终解析,但它们都是异步的 一旦所有这些流都完成,我需要终止我创建的这个子进程。我的问题是,你怎么知道所有的溪流何时结束 尝试:Node.js 如何等待所有节点流完成/结束?,node.js,asynchronous,node.js-stream,Node.js,Asynchronous,Node.js Stream,我有一个子节点进程,每24小时在CRON上运行一次。当流程开始时,它读取一些排队的数据,并将这些数据推送到某个转换流中。然后,该流充当反向多路复用器,并将该流拆分为多个流,这些流最终解析,但它们都是异步的 一旦所有这些流都完成,我需要终止我创建的这个子进程。我的问题是,你怎么知道所有的溪流何时结束 尝试: 我曾尝试使用EventEmitter的“finish”事件,但似乎在第一个反向多路复用流完成时捕捉到了这一点(这是一个很好的例子:) 基于承诺的方法。所以这种方法是有效的,但我认为有一种更简单
我会重新考虑你的第二个选择。考虑下面的代码来方便地将列表映射为承诺:
const promises=data.map((项)=>functionthatturnspromise(项))代码>
构建承诺后,Promise.all是执行多个承诺并返回所有结果的一种方法
Promise.all(承诺)
.然后(结果数组=>doStuff)
我建议查看可观察的对象。或者应该这样做。我用ramda-future
和parallel-future
模块运行和解决了多个子进程的类似问题,这种方法非常简单。它类似于promise,但由于子进程的运行任务/流在本质上更具功能性,我更喜欢这种更干净、更精简的方法。