promise の配列を含む配列があり、各内部配列には 4k、2k、または 500 個の promise があります。
合計で約 60,000 個の promise があり、他の値でもテストできます。
を実行する必要がありPromise.all(BigArray[0])
ます。
最初の内部配列が完成したら、次の配列を実行する必要がありPromise.all(BigArray[1])
ます。
実行しようとすると、Promise.all(BigArray)
スローされます:
fatal error call_and_retry_2 allocation failed - process out of memory
私はそれを並行してではなく、一連の約束のそれぞれを実行する必要があります。これは、ノードが行っていることだと思います。新しいライブラリを使用するべきではありませんが、答えを検討したいと思います!.
編集:
コードの例を次に示します。
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;
})
}