@Danbka

Как выполнить все promise внутри callback-функции?

Проблему объяснить несколько сложно, поэтому привожу код:
// Функция, возвращающая 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-функции. Но с чем это связано - не понимаю.

Есть идеи?
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Да нет, всё правильно работает:
5c0a6b34ba516731880528.png

Вы, кажется, вырезали что-то важное. Сделайте живой пример на jsfiddle.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы