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