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
      // ************************

    }
  })
}

Я имею в виду, код выше работает, но человек чувствует себя ужасно. Происходит много двусмысленности и иерархии переменных, которые вы должны отслеживать. Есть ли лучший способ сделать это?

Ответы на вопрос(1)

Ваш ответ на вопрос