Promise
Асинхронные функции возвращают объект Promise в качестве значения. Внутри промиса хранится результат вычисления, которое может быть уже выполнено или выполнится в будущем.
Промис может находиться в одном из трёх состояний:
pending — стартовое состояние, операция стартовала;
fulfilled — получен результат;
rejected — ошибка.
первый параметр (в примере кода назван resolve) — колбэк для перевода промиса в состояние fulfilled, при его вызове аргументом передаётся результат операции;
второй параметр (в примере кода назван reject) — колбэк для перевода промиса в состояние rejected, при его вызове аргументом передаётся информация об ошибке.
Методы
Существует три метода, которые позволяют работать с результатом выполнения вычисления внутри промиса:
then() - используют, чтобы выполнить код после успешного выполнения асинхронной операции.
catch() - используют, чтобы выполнить код в случае ошибки при выполнении асинхронной операции.
finally() - используют, чтобы выполнить код при завершении асинхронной операции. Он будет выполнен вне зависимости от того, была ли операция успешной или завершилась ошибкой.
Подробнее: Promise
Promise API
В классе Promise есть 6 статических методов:
Promise.all(promises) – ожидает выполнения всех промисов и возвращает массив с результатами. Если любой из указанных промисов вернёт ошибку, то результатом работы Promise.all будет эта ошибка, результаты остальных промисов будут игнорироваться.
Promise.allSettled(promises) (добавлен недавно) – ждёт, пока все промисы завершатся и возвращает их результаты в виде массива с объектами, у каждого объекта два свойства: status:
"fulfilled", если выполнен успешно или"rejected", если ошибка,value– результат, если успешно илиreason– ошибка, если нет.
Promise.race(promises) – ожидает первый выполненный промис, который становится его результатом, остальные игнорируются.
Promise.any(promises) (добавлен недавно) – ожидает первый успешно выполненный промис, который становится его результатом, остальные игнорируются. Если все переданные промисы отклонены, AggregateErrorстановится ошибкой Promise.any.
Promise.resolve(value) – возвращает успешно выполнившийся промис с результатомvalue.
Promise.reject(error) – возвращает промис с ошибкойerror.
Подробнее: Promise API