据我所知,child_process创建在Node.js中是异步的 - 我们如何知道child_process是否准备好接收消息,例如IPC?我们能够检查一下" ready"事件,或"创建"事件
我看不到这里列出的此类事件:
https://nodejs.org/api/child_process.html#child_process_class_childprocess
我在这里遗失了什么吗?通常使用异步进程,我们需要在继续之前等待回调或事件触发。
答案 0 :(得分:1)
您可以假设孩子已经开始准备就绪。节点将缓冲您发送的异步消息(最多限制)。
从Node v5.8.0开始,如果出现错误,您可以在send
上注册一个回调(如果发送失败,您可以收到通知)。此外,child_process.send doc说:
如果没有提供回叫功能且无法发送消息,则a '错误'事件将由ChildProcess对象发出。这个可以 例如,当子进程已经退出时发生。
基本上,因为很多东西都可能出错,所以在您的应用程序实际与它进行对话并获得对您的代码有意义的有效响应之前,您无法确切知道您的子进程正常运行。所以来自节点的关于"成功的任何通用信息"分离儿童过程只会暗示其准备就绪,所以他们不会提供这么微弱的信号。
如果您的子节点进程确实是异步的,并且您的父进程与该子进程没有任何真正的通信,那么您需要添加自己的" I'很好"信息。父母可以期望孩子发送消息(process.send({ startup: 'OK' })
)。虽然如果您想知道子进程是否继续正常运行(这可能比您想要的更多,但可能是您最终会在哪里),这将很快转变为正在进行的健康检查。