🔹 Що таке Promise?
Promise в JavaScript — це об'єкт, який обіцяє повернути результат асинхронної (asynchronous) операції в майбутньому. Зазвичай його використовують для API викликів, операцій з базами даних або завдань, які не завершуються миттєво.
🔹 Три стани Promise:
Promise може мати три стани:
- Pending (в очікуванні): коли Promise створено, але результат ще не отримано.
- Fulfilled (виконано): коли Promise успішно повертає результат.
- Rejected (відхилено): коли Promise не вдалося виконати.
🔹 Як працює Promise?
Щоб створити Promise, використовують конструктор new Promise()
.
const myPromise = new Promise((resolve, reject) => {
let success = true;
if (success) {
resolve("Дані завантажено успішно! ✅");
} else {
reject("Помилка при завантаженні даних! ❌");
}
});
Тут resolve()
викликається, коли операція успішна, а reject()
— коли виникає помилка.
🔹 Використання Promise
Для отримання даних з Promise використовуються методи .then()
та .catch()
.
myPromise
.then(result => {
console.log("Успіх:", result);
})
.catch(error => {
console.log("Помилка:", error);
});
🔹 Ланцюгування Promise
Використовуючи ланцюгування Promise, можна виконувати асинхронні завдання одне за одним.
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Дані користувача завантажено! 🏆");
}, 2000);
});
}
fetchData()
.then(response => {
console.log(response);
return "Обробка даних користувача...";
})
.then(status => {
console.log(status);
})
.catch(error => {
console.error("Помилка:", error);
});
🔹 Обробка Promise через Async/Await
З ES6 використання async/await значно спрощує обробку Promise.
async function loadData() {
try {
let result = await fetchData();
console.log(result);
console.log("Обробка завершена! ✅");
} catch (error) {
console.error("Помилка:", error);
}
}
loadData();
🔹 Підсумок
Promise в JavaScript спрощує асинхронне програмування і робить його ефективним. Використання .then()
, .catch()
, chaining і async/await дозволяє набагато зручніше керувати асинхронними операціями. 🎯
Якщо хочеш дізнатися більше про асинхронне програмування, можеш також вивчити Promise.all()
та Promise.race()
! 🚀
Перекладено з: JavaScript Promise: ভবিষ্যতের প্রতিশ্রুতি!