дождитесь, пока цикл fetch javascript [duplicate]

зависит от того, откуда берутся элементы списка. если они поступают из списка или базы данных, просто добавьте их, а затем используйте javascript для поиска в списке.

15
задан Fabis 14 April 2014 в 21:24
поделиться

3 ответа

Сегодня, если мне нужно сделать это последовательно - я бы сделал это с async/await:

//I'm assuming I'm inside an `async` function
zippyarray; // array of Zippy objects

for(const task of zippyArray) {
  const result = await $.get({ ... });
  // do stuff with result
}
20
ответ дан Benjamin Gruenbaum 26 August 2018 в 01:39
поделиться

Чтобы отслеживать несколько запросов get-Requests, вы используете этот способ:

var cnt = requestCnt;

function finished(){
    if(--cnt)return;
    // Your code here
}

for(var i = 0; i < requestCnt; ++i){
    $.get('something.htm', {data:data}, function(data){
        finished();
    });
}

Вы всегда вызываете законченную функцию, когда запрос получает ответ. Завершенная функция выполняет задание, когда все делается.

0
ответ дан Fuzzyma 26 August 2018 в 01:39
поделиться

Я знаю, что это старый вопрос, но в последнее время ситуация немного изменилась.

Если вы в порядке с использованием внешних библиотек, библиотека обещаний Bluebird имеет довольно хорошую реализацию для этого: Promise.each .

Например,

function helperFunc(zippyarray) {
  return Promise.each(zippyarray, zippy => {
    return someOperationThatReturnAPromise(zippy)
      .then((singleResult) => {
        // do something with the operation result if needed
      })
  }).then((originalArray) => {
    // this happens only after the whole array is processed
    // (result is the original array here)
    return Promise.resolve(originalArray)
  })
}
10
ответ дан MJV 26 August 2018 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: