Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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文件?_Javascript_Node.js - Fatal编程技术网

是否有一种方法可以在节点中同步执行多个JavaScript文件?

是否有一种方法可以在节点中同步执行多个JavaScript文件?,javascript,node.js,Javascript,Node.js,因此,在Node中,我可以使用如下命令执行JavaScript文件: $ node src/someFile.js 但是有没有一种方法可以同步执行给定目录中的所有JavaScript文件(一个文件执行,然后在完成后执行下一个文件,等等)?基本上,有没有一个命令会产生类似的效果 $ node src/firstFile.js $ node src/secondFile.js $ node src/thirdFile.js ... 我试过这样的命令 $ node src/*.js 但是没有成功

因此,在Node中,我可以使用如下命令执行JavaScript文件:

$ node src/someFile.js
但是有没有一种方法可以同步执行给定目录中的所有JavaScript文件(一个文件执行,然后在完成后执行下一个文件,等等)?基本上,有没有一个命令会产生类似的效果

$ node src/firstFile.js
$ node src/secondFile.js
$ node src/thirdFile.js
...
我试过这样的命令

$ node src/*.js
但是没有成功

如果没有这样的命令,那么执行类似操作的最佳方法是什么?

使用POSIX shell:

src/*.js中js的
$;执行节点“$js”;完成
使用POSIX外壳:

src/*.js中js的
$;执行节点“$js”;完成

我不确定这是否适用于您,因为这是shell的一项功能,不是节点运行时的功能,而是

src/*.js中f的
;执行节点“$f”;完成
或者在Powershell中:

Get ChildItem.\*.js|Foreach对象{
节点$\u
}

我不确定这是否适用于您,因为这是shell的一项功能,不是节点运行时的功能,而是

src/*.js中f的
;执行节点“$f”;完成
或者在Powershell中:

Get ChildItem.\*.js|Foreach对象{
节点$\u
}

您可以使用spawn从类节点运行
节点
进程

(function() {

var cp = require('child_process');
var childProcess = cp.spawn('node', [`src/firstFile.js`]);
此时,您必须添加一些侦听器:

// now listens events
// Listen for an exit event:
child.on('exit', function(exitCode) {
    console.log("Child exited with code: " + exitCode);
    return resolve(exitCode);
});
// Listen for stdout data
child.stdout.on('data', function(data) {
    console.log(data.toString());
});
// child error
child.stderr.on('data',
    function(data) {
        console.log('err data: ' + data);
        // on error, kill this child
        child.kill();
    }
);
}).call(this);
当然,您需要在这里序列化执行,但这很容易,因为您有
子项('exit')
,它告诉您进程已结束,因此您可以启动下一个进程


查看我的示例工作解决方案,该解决方案在
节点中运行多个进程,并等待执行结束/加入。

您可以使用spawn从类似节点的节点运行
节点
进程

(function() {

var cp = require('child_process');
var childProcess = cp.spawn('node', [`src/firstFile.js`]);
此时,您必须添加一些侦听器:

// now listens events
// Listen for an exit event:
child.on('exit', function(exitCode) {
    console.log("Child exited with code: " + exitCode);
    return resolve(exitCode);
});
// Listen for stdout data
child.stdout.on('data', function(data) {
    console.log(data.toString());
});
// child error
child.stderr.on('data',
    function(data) {
        console.log('err data: ' + data);
        // on error, kill this child
        child.kill();
    }
);
}).call(this);
当然,您需要在这里序列化执行,但这很容易,因为您有
子项('exit')
,它告诉您进程已结束,因此您可以启动下一个进程


请看我的示例工作解决方案,该解决方案在
节点中运行多个进程,并等待执行结束/连接。

如果从shell调用每个进程不是一个困难的要求,我将使用shell中的单个节点进程来启动它们。此节点脚本将:

  • 遍历模块目录
  • 需要执行它的第一个回调,并传递一个回调,模块将在完成时调用该回调
  • 调用完整回调后,执行目录中的下一个脚本
如果从shell调用每一个对象不是一个困难的要求,那么我将使用shell中的单个节点进程来启动它们。此节点脚本将:

  • 遍历模块目录
  • 需要执行它的第一个回调,并传递一个回调,模块将在完成时调用该回调
  • 调用完整回调后,执行目录中的下一个脚本
使用shell特定功能的答案是否为您所接受?(我看你已经试过了)@ᅵZVᅵ 我目前正在运行一台Windows计算机,因此shell脚本对我个人来说不是最佳选择-但是如果它确实解决了这个问题,那么它应该是一个完全有效的解决方案。我将使用powershell结果来确定我的答案-我认为最好从shell执行此操作,除非您需要捕获它们的退出代码,在
CreateRemoteThread
等中还原他们的SEH链。我不在windows计算机上,请告诉我PS脚本是否适合您。您是否接受使用特定于shell的功能的答案?(我看你已经试过了)@ᅵZVᅵ 我目前正在运行一台Windows计算机,因此shell脚本对我个人来说不是最佳选择-但是如果它确实解决了这个问题,那么它应该是一个完全有效的解决方案。我将使用powershell结果来确定我的答案-我认为最好从shell执行此操作,除非您需要捕获它们的退出代码,在
CreateRemoteThread
等中恢复他们的SEH链。我不在我的windows计算机上,请告诉我PS脚本是否适合您。因此,对于这一点,node没有简单的本机一行解决方案,但它需要编写一个文件(如您上面所建议的)?一行解决方案无法控制进程状态,退出代码和
pid
。当然,您可以编写一个
bash
脚本,该脚本采用
pid
,在for循环语句中执行
node$filename
,等等,但您需要一个主管来处理所有这些过程,这些过程可以用bash、python、perl或…node编写。啊,因此node本身没有简单的一行程序解决方案,但是它需要编写一个文件(就像你上面建议的那样)?一行解决方案不会让你控制进程状态、退出代码和
pid
。当然,您可以编写一个
bash
脚本,该脚本采用
pid
,在for循环语句中执行
node$filename
,等等,但您需要一个主管来处理所有这些进程,这些进程可以用bash、python、perl或…node编写。