Skip to main content

Что такое 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 знает, когда и как его обработать.