【发布时间】:2020-05-01 00:54:37
【问题描述】:
我有一个用 JS 编写的脚本,它在 Node 中执行(不是网站,不是电子应用程序;只是在终端中 node myscript.js。该脚本的一部分是顺序执行一系列其他(shell)脚本,并且打印这些脚本的输出。
我尝试了两种方法:
const execSync = require('child_process').execSync;
for (const argItemin list) {
console.log(execSync('myscript.bat ' + argItem, {encoding: 'utf-8'}));
}
const exec = require('child_process').exec;
for (const argItem in list) {
const execution = exec('myscript.bat ' + argItem);
execution.stdout.on('data', function (data) { console.log(data); });
}
第一种方法同步执行并打印所有内容,但在每个myscript.bat 执行完成后写入输出,而不是在myscript.bat 打印输出时写入。
第二种方法在事情发生时打印它们,但是因为在每次执行完成之前没有任何阻塞,所以输出是一团糟。
如何在脚本完成执行之前阻止第二种方法的子进程,以获得两全其美的效果?谢谢!
【问题讨论】:
标签: javascript node.js