@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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 22:48
100 руб./за проект
19 апр. 2024, в 20:43
20000 руб./за проект