Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何与node同步执行node.js文件?_Javascript_Node.js_Asynchronous - Fatal编程技术网

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();