Что такое Promise?
Promise — это объект в JavaScript, который представляет результат асинхронной операции
(то есть того, что завершится позже).
Проще:
Promise = обещание, что значение будет, но не сразу
Зачем нужен Promise
В JS много асинхронных вещей:
-
запросы к серверу
-
таймеры
-
чтение файлов
-
динамические импорты
Promise позволяет:
-
дождаться результата
-
обработать успех или ошибку
-
не блокировать основной поток
Как выглядит Promise
const promise = new Promise((resolve, reject) => {
// асинхронная работа
})
У Promise есть 3 состояния:
| Состояние | Что значит |
|---|---|
pending |
в процессе |
fulfilled |
успешно выполнен |
rejected |
ошибка |
Простой пример
const promise = new Promise((resolve) => {
setTimeout(() => {
resolve('Готово!')
}, 1000)
})
Через 1 секунду Promise станет fulfilled.
Как использовать Promise
1️⃣ .then() / .catch()
promise
.then(result => {
console.log(result)
})
.catch(error => {
console.error(error)
})
2️⃣ async / await (современно 👍)
async function run() {
const result = await promise
console.log(result)
}
👉 await:
-
«ставит код на паузу»
-
но не блокирует браузер
Реальный пример (ты уже видел)
requestClient.get('/menu/all')
Возвращает:
Promise<Menu[]>
Использование:
const menu = await getAllMenusApi()
Что происходит под капотом
console.log('1')
fetch('/api')
.then(() => console.log('2'))
console.log('3')
Вывод:
1
3
2
Promise выполняется позже, когда стек освободится.
Promise vs синхронный код
| Синхронный | Асинхронный (Promise) |
|---|---|
| Блокирует выполнение | Не блокирует |
| Сразу возвращает значение | Возвращает Promise |
| Просто | Гибко и эффективно |
Частые ошибки ❌
🔹 Забыли await
const data = getAllMenusApi() // ❌ Promise
🔹 Нужно так:
const data = await getAllMenusApi() // ✅ данные
Коротко
Promise — это механизм работы с асинхронным кодом в JavaScript:
результат будет позже, и JS знает, когда и как его обработать.
No comments to display
No comments to display