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, то следующие пять процессов должны открываться.
Что я делаю не так или может быть есть другое более правильное решение данной задачи?