Как дождаться данных, заполняемых асинхронно в цикле?

var data = [];

for ( var i = 0; i < 10; i++ ){
     (function(i){
           data.push( func(i) );
     })(i)
}

console.log( data );


Здесь func(i) - вызов какой-либо асинхронной функции.
В результате данные в массиве data не успевают заполниться, их нужно как-то дождаться, пока не выполнятся асинхронные функции. Как мне дождаться данных?
  • Вопрос задан
  • 2591 просмотр
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
https://github.com/kriskowal/q
Используйте силу promise. Пусть ваша функция func возвращает массив обещаний, тогда можно будет сделать что-то типа
var promises = [];
for (var i = 0;i<10;i++) {
    promises.push(func(i));
}

Q.all(promises).then(function (results) {
    console.log(results);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
09 мая 2024, в 21:54
2500 руб./за проект
09 мая 2024, в 20:34
1000 руб./за проект
09 мая 2024, в 20:33
200000 руб./за проект