从Node documentation on Synchronous Process Creation开始,它指出如果我运行child_process.spawnSync()
,它将会:
阻止Node.js事件循环,暂停执行任何其他代码,直到生成的进程退出。
如果我使用asynch版本child_process.spawn()
并将其包含在同步行为的承诺中,它是否仍会阻止事件循环?
我使用spawn
的过程只需要一秒钟,但我使用的是SSE流,如果它在那一瞬间,我不会让它阻止新用户获取流。
答案 0 :(得分:2)
如果我使用asynch版本的child_process.spawn()并将其包装在同步行为的承诺中,它是否仍会阻止事件循环?
没有。异步的节点核心功能不能同步。 Promise可以让你的代码从上到下读取更多,就像它是同步的一样,但实际的机制仍然是异步和非阻塞的。