Back to questions
Т-Банк
Middle+
2
Какие статические методы Promise вы знаете помимо Promise.resolve? Чем Promise.all отличается от Promise.allSettled?
Companies where asked
Answer from AI
sobes.tech AI
Помимо Promise.resolve, существуют и другие статические методы Promise:
Promise.reject(reason)— создаёт промис, который сразу отклоняется с указанной причиной.Promise.all(iterable)— принимает массив (или другой итерируемый объект) промисов и возвращает новый промис, который:- выполняется, когда все промисы из массива успешно выполнены, с массивом результатов.
- отклоняется сразу, если хотя бы один из промисов отклоняется.
Promise.allSettled(iterable)— принимает массив промисов и возвращает промис, который выполняется, когда все промисы завершены (независимо от результата), с массивом объектов, описывающих результат каждого промиса (fulfilled или rejected).Promise.race(iterable)— возвращает промис, который выполнится или отклонится, как только первый из переданных промисов выполнится или отклонится.Promise.any(iterable)— возвращает промис, который выполнится с результатом первого успешно выполненного промиса, или отклонится, если все промисы отклонятся.
Отличие Promise.all от Promise.allSettled:
Promise.allотклоняется при первом же отклонённом промисе, полезен, когда нужно, чтобы все операции прошли успешно.Promise.allSettledждёт завершения всех промисов, независимо от их результата, и возвращает подробный отчёт, что удобно для сбора результатов с учётом ошибок.
Пример:
Promise.all([
Promise.resolve(1),
Promise.reject('error'),
Promise.resolve(3)
]).catch(console.log); // Выведет 'error'
Promise.allSettled([
Promise.resolve(1),
Promise.reject('error'),
Promise.resolve(3)
]).then(console.log);
/* Выведет:
[
{ status: 'fulfilled', value: 1 },
{ status: 'rejected', reason: 'error' },
{ status: 'fulfilled', value: 3 }
]
*/