Выполнить партию обещаний в серии. Как только Promise.all будет завершен, перейдите к следующей партии
У меня есть массив, который содержит массив обещаний, и каждый внутренний массив может иметь 4k, 2k или 500 обещаний.
В общей сложности есть около 60 тыс. Обещаний, и я могу проверить и другие значения.
Теперь мне нужно выполнитьPromise.all(BigArray[0])
.
Как только первый внутренний массив готов, мне нужно выполнить следующийPromise.all(BigArray[1])
И так далее, и так далее.
Если я попытаюсь выполнитьPromise.all(BigArray)
это бросает:
fatal error call_and_retry_2 allocation failed - process out of memory
Мне нужно выполнить каждое из обещаний последовательно, а не параллельно, что, я думаю, именно этим и занимается Node. Я не должен использовать новые библиотеки, однако готов рассмотреть ответ!
Редактировать:
Вот пример кода:
function getInfoForEveryInnerArgument(InnerArray) {
const CPTPromises = _.map(InnerArray, (argument) => getDBInfo(argument));
return Promise.all(CPTPromises)
.then((results) => {
return doSomethingWithResults(results);
});
}
function mainFunction() {
BigArray = [[argument1, argument2, argument3, argument4], [argument5, argument6, argument7, argument8], ....];
//the summ of all arguments is over 60k...
const promiseArrayCombination = _.map(BigArray, (InnerArray, key) => getInfoForEveryInnerArgument(InnerArray));
Promise.all(promiseArrayCombination).then((fullResults) => {
console.log(fullResults);
return fullResults;
})
}