Node.js не запускает процессы паралелльно

У меня есть список blobs, которые я хочу скачать с azure. Для этого используется azcopy library в node.js. Я запускаю process с помощью require("child_process").spawn, в котором открываю power shell и вставляю команду для копирования blob.

например, у меня есть десять blobs, которые я хочу скачать, соответвенно это 10 комманд records.lenght = 10, я хочу запустить 5 процессов параллельно и когда они закончаться, и запустить следующие 5 процессов

Код приведен ниже:

  for (let count = 0; count < records.length; ) {
    let internalCount = 0;
    while (internalCount < 5 || count >= records.length) { 
      let process = spawn("powershell.exe", [records[count].commandMedia], {
        spawn: true,
      });

      process.stdout.on("data", function (data) {
       console.log("Powershell Data: " + data);
        let results = data.toString();   
      });


      process.on("exit", function () {
        internalCount--;
        console.log("FINISH --------", internalCount, count);
      });

      process.stdin.end(); //end input
      internalCount++;
      count++;
      console.log("START -------- ", internalCount, count);
    }
    console.log("~~~~~~~~~~~~~", internalCount)
    while (internalCount > 0) {
      //console.log("END WHILE INTERNAL COUNT", internalCount);
    }
  }

По логам в консоле, я вижу что процессы не запускаются вообще и последний лог распечатывается console.log("~~~~~~~~~~~~~", internalCount), который находится перед последним while loop. Что я делаю не так, ведь по логике, первые 5 процессов должны были открыться, на exit of process internalCount уменьшается на 1 и когда доходит до 0, то следующие пять процессов должны открываться.

Что я делаю не так или может быть есть другое более правильное решение данной задачи?


Ответы (0 шт):