簡體   English   中英

有沒有一種方法可以在節點中同步執行多個JavaScript文件?

[英]Is there a way to synchronously execute multiple JavaScript files in node?

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

$ node src/someFile.js

但是,是否有一種方法可以同步執行給定目錄中的所有 JavaScript文件(一個文件執行,然后在下一個文件執行后執行,等等)? 基本上,有沒有一條命令會像

$ node src/firstFile.js
$ node src/secondFile.js
$ node src/thirdFile.js
...

我已經嘗試過類似的命令

$ node src/*.js

但沒有成功。

如果沒有這樣的命令,那么做這樣的最好方法是什么?

我不確定這是否對您有用,因為這是外殼程序的功能,而不是節點運行時的功能。

for f in src/*.js; do node "$f"; done

或在Powershell中:

Get-ChildItem .\*.js | Foreach-Object {
  node $_ 
}

您可以使用spawn從如下節點運行node進程

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

當然,您需要在這里序列化執行,但是這很容易,因為您有child.on('exit')告訴您該過程已結束,因此您可以啟動下一個過程。

我的示例工作解決方案示例中,請參見控制節點中的多個進程,該示例解決方案在node中運行多個進程並等待執行結束/加入。

使用POSIX shell:

$ for js in src/*.js; do node "$js"; done

如果從shell調用每個對象都不是硬性要求,那么我將通過shell中的單個節點進程將它們全部拉開。 該節點腳本將:

  • 遍歷模塊目錄
  • 需要執行它的第一個,並傳遞一個回調,模塊將在完成時調用該回調
  • 當調用完整的回調時,執行目錄中的下一個腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM