Что такое Promise?
Асинхронность и Event Loop
Promise — это объект, представляющий результат асинхронной операции, который станет известен в будущем: успех (fulfilled) или ошибка (rejected).
Состояния
- pending — в ожидании, результата ещё нет.
- fulfilled — успешно завершён, есть значение.
- rejected — завершён с ошибкой.
Переход происходит один раз и необратим: из pending в fulfilled или rejected.
Как использовать
const promise = new Promise((resolve, reject) => {
setTimeout(() => resolve('данные'), 1000);
});
promise
.then((value) => console.log(value)) // 'данные'
.catch((error) => console.error(error))
.finally(() => console.log('готово'));then— обработчик успеха (и опционально ошибки).catch— обработчик ошибки, ловит reject из всей цепочки выше.finally— выполняется в любом случае, не меняет значение.
Чем лучше колбэков
- Плоские цепочки вместо «callback hell».
- Единая обработка ошибок через
catch. - Комбинаторы:
Promise.all,race,allSettled,any.
Детали
- Коллбэки
thenпопадают в очередь микрозадач. - Возврат значения из
thenоборачивается в новый промис — цепочка продолжается. throwвнутриthenэквивалентенreject.
Коротко для собеседования
Promise — обёртка над будущим результатом асинхронной операции с тремя состояниями. Даёт цепочки then/catch/finally и удобную обработку ошибок вместо вложенных колбэков.
Подробнее: learn.javascript.ru — Промисы, MDN — Promise