Skip to main content
Практика завдань

Проміси в JavaScript та методи promise

Проміс

Promise — це функція-конструктор, яка використовується для створення промісів у JavaScript. Promise — це об'єкт, який дозволяє працювати з асинхронними операціями та виконувати їх без блокування основного потоку виконання.

Promise може бути в одному з наступних станів:

  • Pending — початковий стан, коли асинхронна операція ще не завершена.
  • Fulfilled — коли асинхронна операція успішно завершена.
  • Rejected — коли асинхронна операція завершена з помилкою.

Приклад створення промісу

javascript
let promise = new Promise((resolve, reject) => { let success = true; if (success) { resolve("Операція успішно завершена!"); // Успішне виконання } else { reject("Сталася помилка!"); // Помилка } });

Методи промісів

Promise.all

Promise.all() використовується для виконання кількох промісів паралельно та повертає новий проміс, який виконується, коли всі проміси в масиві успішно завершаться. Якщо хоча б один проміс відхилено, результат буде відхилено з помилкою цього промісу.

Синтаксис Promise.all

javascript
Promise.all([promise1, promise2, ...]) .then((results) => { console.log(results); }) .catch((error) => { console.log(error); });

Приклад Promise.all

javascript
let promise1 = new Promise((resolve) => setTimeout(resolve, 1000, "Перший")); let promise2 = new Promise((resolve) => setTimeout(resolve, 2000, "Другий")); Promise.all([promise1, promise2]) .then((results) => { console.log(results); // ["Перший", "Другий"] }) .catch((error) => { console.log(error); // Якщо один проміс відхилено, помилка буде виведена });

Promise.race

Promise.race() приймає масив промісів і повертає новий проміс, який завершується, як тільки перший проміс в масиві завершується (незалежно від того, чи був він виконаний або відхилений).

Синтаксис Promise.race

javascript
Promise.race([promise1, promise2, ...]) .then((value) => { console.log(value); }) .catch((error) => { console.log(error); });

Приклад Promise.race

javascript
let promise1 = new Promise((resolve) => setTimeout(resolve, 1000, "Перший")); let promise2 = new Promise((resolve) => setTimeout(resolve, 2000, "Другий")); Promise.race([promise1, promise2]) .then((value) => { console.log(value); // "Перший", тому що він завершився першим });

Promise.allSettled

Promise.allSettled() виконує всі проміси в масиві та повертає результат для кожного, незалежно від того, чи були вони виконані або відхилені.

Синтаксис Promise.allSettled

javascript
Promise.allSettled([promise1, promise2, ...]) .then((results) => { console.log(results); });

Приклад Promise.allSettled

javascript
let promise1 = Promise.resolve("Перший"); let promise2 = Promise.reject("Помилка в другому"); Promise.allSettled([promise1, promise2]) .then((results) => { console.log(results); // [{ status: "fulfilled", value: "Перший" }, { status: "rejected", reason: "Помилка в другому" }] });

Promise.any

Promise.any() повертає новий проміс, який виконується, як тільки перший проміс в масиві успішно виконується. Якщо всі проміси відхилені, він відхиляється з помилкою.

Синтаксис Promise.any

javascript
Promise.any([promise1, promise2, ...]) .then((value) => { console.log(value); }) .catch((error) => { console.log(error); });

Приклад Promise.any

javascript
let promise1 = new Promise((resolve, reject) => setTimeout(reject, 1000, "Помилка 1")); let promise2 = new Promise((resolve) => setTimeout(resolve, 2000, "Успіх")); Promise.any([promise1, promise2]) .then((value) => { console.log(value); // "Успіх", тому що другий проміс успішно завершився першим }) .catch((error) => { console.log(error); // Якщо всі проміси відхилені, помилка буде виведена });

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань