节点child_process.spawn()包含在promise-block事件循环中?

时间:2016-02-07 02:36:54

标签: javascript node.js

Node documentation on Synchronous Process Creation开始,它指出如果我运行child_process.spawnSync(),它将会:

  

阻止Node.js事件循环,暂停执行任何其他代码,直到生成的进程退出。

如果我使用asynch版本child_process.spawn()并将其包含在同步行为的承诺中,它是否仍会阻止事件循环?

我使用spawn的过程只需要一秒钟,但我使用的是SSE流,如果它在那一瞬间,我不会让它阻止新用户获取流。

1 个答案:

答案 0 :(得分:2)

  

如果我使用asynch版本的child_process.spawn()并将其包装在同步行为的承诺中,它是否仍会阻止事件循环?

没有。异步的节点核心功能不能同步。 Promise可以让你的代码从上到下读取更多,就像它是同步的一样,但实际的机制仍然是异步和非阻塞的。