我有一个应用程序(基本上)有父进程和子进程。子进程执行几个步骤(在这种情况下运行测试),并在测试步骤完成时写入STDOUT。这样,父进程将始终具有“最新”结果,因此如果子进程由于某种原因而过早退出,则父进程将知道完成的最后一步。
在子流程中
Range("A4").NumberFormat = "@"
Range("A4").Value = "123456789123"
在父流程中
console.log(doStep1());
console.log(doStep2());
console.log(doStep3());
process.exit();
我注意到的问题是,c.stdout.on("data", () => storeLatestResultsInVariable())
c.on("exit", () => indicateTestExitedAndAlertUserToLatestResults());
回调是在最终onExit
的{{1}}回调完成之前触发的。因此,在某些情况下,用户会收到storeLatestResultsInVariable()
而不是console.log
的结果的提醒。
这有点复杂,因为“步骤”都是异步的,doStep2
在一个函数中调用,如果所有“步骤”都完成或“错误”,则运行,所以我需要使用doStep3
以确保流程完全结束。
我的主要问题:在调用process.exit
代码之前,有没有办法让Node等到process.exit
函数完成?否则,是否有办法使用storeLatestResultsInAVariable()
传回数据,以便我可以在c.on("exit", ...)
回调中使用该数据?
非常感谢帮助,希望问题描述足够清楚!