JavaScript Promises

Promise представляє результат асинхронного завдання.

Ви використовуєте Promise для викликів API, запитів до бази даних та читання файлів.

Promise має три стани:

  • Pending: завдання все ще виконується.
  • Fulfilled: завдання успішно завершено.
  • Rejected: завдання завершилося помилкою.

Структура виглядає так:

const promise = new Promise((resolve, reject) => {
  // Виконавець (executor) запускається негайно
});

Ви обробляєте результати за допомогою цих методів:

  • .then(): виконується, коли promise успішний.
  • .catch(): виконується, коли promise завершується помилкою.
  • .finally(): виконується, коли завдання завершується незалежно від результату.

Важливі правила, які варто запам'ятати:

  • Перемагає перший результат. Якщо ви викличете resolve(), а потім reject(), переможе resolve.
  • Функція-виконавець (executor) працює синхронно.
  • Використання async та await робить ваш код легшим для читання, ніж використання .then().

Обробка кількох promise:

  • Promise.all(): використовує підхід fail-fast. Якщо один promise завершується помилкою, вся група також завершується помилкою.
  • Promise.allSettled(): чекає завершення кожного promise. Він повертає результати, навіть якщо деякі завдання завершилися помилкою.

Підсумок:

  • Promise: обробник асинхронних результатів.
  • resolve: позначає успіх.
  • reject: позначає помилку.
  • async/await: чистіший спосіб написання promise.
  • Promise.all: зупиняється на першій помилці.
  • Promise.allSettled: завершує всі завдання.

Джерело: https://dev.to/malik786/javascript-promises-2hn4