Execute Reihe von Versprechungen in Serie. Sobald Promise.all fertig ist, gehe zum nächsten Stapel
Ich habe ein Array, das eine Reihe von Versprechungen enthält, und jedes innere Array kann entweder 4k, 2k oder 500 Versprechungen enthalten.
nsgesamt gibt es rund 60.000 Versprechen und ich kann es auch mit anderen Werten teste
Nun muss ich das @ ausführPromise.all(BigArray[0])
.
obald das erste innere Array fertig ist, muss ich das nächste @ ausführPromise.all(BigArray[1])
und so weiter und so fort.
Wenn ich versuche, ein @ auszuführPromise.all(BigArray)
es wirft:
fatal error call_and_retry_2 allocation failed - process out of memory
Ich muss jedes Versprechen nacheinander ausführen, nicht parallel. Ich denke, das ist, was Node tut. Ich sollte keine neuen Bibliotheken verwenden, bin aber bereit, die Antwort zu erwäge
Bearbeiten
Hier ist ein Beispiel für einen Code:
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;
})
}