Проблему объяснить несколько сложно, поэтому привожу код:
// Функция, возвращающая promise
someFunction = function(id) {
return new Promise((resolve, reject) => {
// Некий асинхронный метод, который в качестве параметра принимает call-back-функцию
AsyncFunction(function() {
console.log(id);
resolve();
})
});
}
let someData = [1, 2, 3];
let promises = [];
for (let i = 0; i < someData.length; i++) {
promises.push(
someFunction(someData[i])
)
}
// После разрешения всех промисов - получаем результат
Promise.all(promises).then(function(test) {
console.log(test);
})
В консоль выводится только "1", т.е. резолвится только 1 промис. Не понимаю, почему?
Если написать так:
someFunction = function(id) {
return new Promise((resolve, reject) => {
resolve();
});
}
То все выполняется так, как надо.
Очевидно проблема в том, что resolve() вызывается внутри callback-функции. Но с чем это связано - не понимаю.
Есть идеи?