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