我有一个子节点进程,每24小时在CRON上运行一次。当进程开始时,它会读取一些排队的数据并将数据推送到某些转换流中。然后,该流充当反向多路复用器,并将流分成多个流,最终解析但它们都是异步的。
我需要在所有这些流完成后终止我创建的子进程。我的问题是,你怎么知道所有的流都已经完成了?
我试图使用EventEmitter'完成'事件,但似乎是在第一个反向多路复用流完成时捕获(这是一口:))。
基于承诺的方法。所以这种方法有效,但我认为有一种更简单的方法来做这样的事情。基本上,这导致为每个反向多路复用管道创建承诺,并且当每个管道完成时我们解决该承诺。然后,当所有承诺都已解决时,会触发一个事件,我们会在其他地方捕获该事件以终止该过程。
答案 0 :(得分:0)
我会重温你的第二个选择。请考虑以下代码,以便轻松地将列表映射到承诺:
const promises = data.map((item) => functionThatReturnsPromise(item));
构造promises之后,Promise.all是一种执行多个promise并返回所有结果的方法。
Promise.all(promises)
.then(array_of_results => doStuff)