Junior — Middle
Da li će Promise.all nastaviti sa izvršavanjem ako jedna od prosleđenih obećanja ne uspe?
sobes.tech АИ
Одговор од АИ
Нет, Promise.all не продолжит ожидать остальные промисы, если один из них завершится с ошибкой (отклонится). В этом случае Promise.all сразу же отклоняется с той же ошибкой, и дальнейшее выполнение остальных промисов не влияет на результат.
То есть, если хотя бы один промис из массива, переданного в Promise.all, отклонится, итоговый промис тоже будет отклонён с этой ошибкой.
Пример:
const p1 = Promise.resolve(1);
const p2 = Promise.reject(new Error('Ошибка'));
const p3 = new Promise(resolve => setTimeout(() => resolve(3), 1000));
Promise.all([p1, p2, p3])
.then(results => console.log('Результаты:', results))
.catch(error => console.error('Ошибка:', error.message));
// Выведет: Ошибка: Ошибка
Обратите внимание, что p3 может продолжить выполнение, но Promise.all уже отклонился и не ждёт его результата.