Ho una matrice che contiene una serie di promesse e ogni array interno potrebbe avere promesse 4k, 2k o 500.Esegui batch di promesse in serie. Una volta che Promise.all è finito vai al lotto successivo
In totale ci sono circa 60k promesse e posso provarlo con altri valori.
ora ho bisogno di eseguire il Promise.all (BigArray [0]).
Una volta che il primo array interno è fatto, ho bisogno di eseguire la successiva Promise.all (BigArray [1]), e così via e così via.
Se provo ad eseguire un Promise.all (BigArray) il suo lancio:
allocazione fatale errore call_and_retry_2 fallito - processo di memoria ho bisogno di eseguirlo ciascuna delle promesse in serie, non in parallelo, che mi penso che sia ciò che fa Node. Non dovrei usare nuove librerie, tuttavia sono disposto a considerare la risposta !.
Edit:
Ecco un pezzo esempio di codice:
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;
})
}
Sei lo stesso utente che ha postato questa domanda precedente che contiene un contesto pertinente: [Esegui Promise.all in serie] (http://stackoverflow.com/questions/37196699/execute-promise-all-in-series/37196780# comment61956748_37196780)? – jfriend00
Stai bene con tutte le operazioni a 60k eseguite in parallelo, ma vuoi solo processare i risultati in serie (un sotto-array alla volta)? Oppure, hai effettivamente bisogno delle operazioni che ogni sottoarray rappresenta per essere eseguito in serie e processato in serie? Quest'ultimo sarebbe molto più sicuro da un punto di vista della memoria e delle risorse in node.js. – jfriend00
Sì, lo sono. Ho bisogno che funzionino in serie. sto bene con solo le promesse innerArray in esecuzione in parallelo. Una volta che innerArray 1 è terminato, passa alle prossime promesse da 500-4k su innerArray 2 ed esegui quelle in parallelo, una volta che le promesse di innnerArray 500-4k sono state eseguite, passa a innerArray 3 e fai quei 500-4k, una volta che innerArray 3 è stato fatto mossa su innerArray 4 e fare quei 500-4k ... e così via – user1554966