https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
я есть обещание, заключенное в функцию. Я буду вызывать эту функцию несколько раз, используя разные входные параметры. Каждый раз, когда обещание разрешается, я помещаю разрешенное значение в массив хранения.
Когда все мои вызванные обещания будут решены, я буду использовать этот массив хранения в других функциях.
Есть ли какой-нибудь чистый способ установить это без использования переменных "global-ish"?
Приведенный ниже код - единственный способ заставить эту работу работать:
// Set global-ish variables that can be referenced from multiple functions
var storageArray = [];
var numberOfPromiseCalls = 10;
var promiseCallsCount = 0;
// Setup promise wrapper
function promiseWrapper(inputParams){
return new Promise(function(resolve, reject) {
// awesome stuff at work here using inputParams
resolve(desiredOutput);
}
})
// call promise 10 times
for(i=0;i<numberOfPromiseCalls;i++){
// actual promise call
promiseWrapper(inputParams[i]).then(function (desiredOutput) {
// push resolve to storage array
storageArray.push(desiredOutput);
// test if this resolve is the "last" resolve of all the promises we called
promiseCallsCount++;
if(promiseCallsCount == numberOfPromiseCalls){
// ************************
// call a function that can work with the final storageArray
// ************************
}
})
}
Я имею в виду, код выше работает, но человек чувствует себя ужасно. Происходит много двусмысленности и иерархии переменных, которые вы должны отслеживать. Есть ли лучший способ сделать это?