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: завершує всі завдання.
