Javascript 如何与node同步执行node.js文件?
可能重复:Javascript 如何与node同步执行node.js文件?,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,可能重复: 我希望从另一个node.js文件同步执行node.js文件。这是我所拥有的,但它是异步的 var spawn = spawn('node', ['./file.js']); spawn.stdout.on('data',function(data){}); 根据您在问题下的评论,听起来您不希望它是同步的,并且您不关心它的输出 如果您只是想启动另一个进程并忘记它,而不看它或不关心它何时结束,那么您已经使用()的内容就是这样做的 如果您想真正触发并忘记,那么您需要指定
我希望从另一个node.js文件同步执行node.js文件。这是我所拥有的,但它是异步的
var spawn = spawn('node', ['./file.js']);
spawn.stdout.on('data',function(data){});
根据您在问题下的评论,听起来您不希望它是同步的,并且您不关心它的输出 如果您只是想启动另一个进程并忘记它,而不看它或不关心它何时结束,那么您已经使用()的内容就是这样做的 如果您想真正触发并忘记,那么您需要指定
分离
选项,以便在进程终止时不会杀死子进程。从文档中:
如果设置了分离
选项,则子流程将成为新流程组的负责人。这使得在父级退出后,子级可以继续运行
再往下看,显然您也必须unref
it:
默认情况下,父级将等待分离的子级退出。要防止父级等待给定的子级,请使用child.unref()
方法,父级的事件循环将不将该子级包含在其引用计数中
和显然与stdio有关
:
当使用分离
选项启动长时间运行的进程时,该进程将不会在后台运行,除非提供了未连接到父进程的stdio
配置。如果父级的stdio被继承,则子级将保持连接到控制终端
因此:
你真的想同步进行吗?而不是去听音乐?因为您似乎想使用它的
stdout
。如果同步执行,则该行在子项完成之前不会运行。…。@t.J.Crowder我不需要响应,我也不希望服务器等待响应。我从另一个示例中获取了stdout
,在这个示例中,我正在等待stdout
。有没有更好的功能可以做到这一点,而不需要安装整个模块?@ThomasReggi:听起来你并不希望它是同步的。我已经添加了一个答案,希望能对你有所帮助。这太棒了,谢谢你帮我深入了解。哇。@ThomasReggi:哈哈,很高兴这有帮助!
spawn('node', ['./file.js'], {
detached: true,
stdio: [ 'ignore', 'ignore', 'ignore' ]
}).unref();