Node.js 可以使用多个bash脚本';t在派生的子进程中异步运行
这对于单次异步调用运行良好:Node.js 可以使用多个bash脚本';t在派生的子进程中异步运行,node.js,bash,asynchronous,child-process,Node.js,Bash,Asynchronous,Child Process,这对于单次异步调用运行良好: "use strict"; function bashRun(commandList,stdoutCallback,completedCallback) { const proc=require("child_process"); const p=proc.spawn("bash"); p.stdout.on("data",function(data){ stdoutCallback(output)
"use strict";
function bashRun(commandList,stdoutCallback,completedCallback)
{
const proc=require("child_process");
const p=proc.spawn("bash");
p.stdout.on("data",function(data){
stdoutCallback(output);
});
p.on("exit",function(){
completedCallback();
});
p.stderr.on("data",function(err){
process.stderr.write("Error: "+err.toString("utf8"));
});
commandList.forEach(i=>{
p.stdin.write(i+"\n");
});
p.stdin.end();
}
module.exports.bashRun = bashRun;
但当进入for循环时,它不会。它只输出最新元素(流程)的标准输出信息:
for(var i=0;i<20;i++)
{
var iLocal =i;
bashRun(myList,function(myStdout){ /* only result for iLocal=19 !*/},function(){});
}
我如何使用其他工具来保持上述模块的相同功能?似乎是
I
的作用域值出现问题,请尝试将循环更改为使用let
例如:
for(设i=0;我希望与i
的作用域值有关。如何计算myList
的值?我正在使用局部变量。我应该尝试局部常量吗?尝试for现在,它是有效的。我想我错过了一些关于JavaScript的基本训练。如果你回答的话,我会接受的。添加答案作为参考。欢呼!然后代码> var >代码>就像一个C++的全局静态变量。是的,<代码> var >代码有全局范围,而<>代码> <代码>有块级别范围。更多信息在这里。
p.stdout.on("data",function(data){
^
TypeError: Cannot read property 'on' of null