Junior
225
questionbank
Что такое Promise в JavaScript?
Ответ от нейросети
sobes.tech AI
Promise — это объект, представляющий собой конечное завершение (или неудачу) асинхронной операции и ее результирующее значение. Promise находится в одном из трех состояний: ожидание (pending), выполнение (fulfilled) или отклонение (rejected). Он позволяет избежать "ада колбэков" и делает асинхронный код более читаемым и управляемым.
Основные методы Promise:
.then(): Обрабатывает успешное выполнение Promise и возвращает новый Promise. Принимает функцию-обработчик для успешного результата..catch(): Обрабатывает отклонение Promise и возвращает новый Promise. Принимает функцию-обработчик для ошибки. Является синтаксическим сахаром для.then(null, rejectionHandler)..finally(): Выполняет функцию независимо от результата Promise (успех или ошибка). Удобен для очистки ресурсов.Promise.all(iterable): Возвращает новый Promise, который выполняется, когда выполняются все Promise в переданном итерируемом объекте. Отклоняется, если хотя бы один из Promise отклоняется.Promise.race(iterable): Возвращает новый Promise, который выполняется или отклоняется, как только выполняется или отклоняется любой из Promise в переданном итерируемом объекте.Promise.resolve(value): Возвращает Promise, который выполняется с указанным значением.Promise.reject(reason): Возвращает Promise, который отклоняется с указанной причиной.
Пример использования:
// Создание нового Promise
const myPromise = new Promise((resolve, reject) => {
const success = true; // Имитация успешной или неуспешной операции
if (success) {
setTimeout(() => {
resolve("Операция выполнена успешно!"); // Вызываем resolve при успехе
}, 1000);
} else {
setTimeout(() => {
reject("Операция завершилась с ошибкой!"); // Вызываем reject при ошибке
}, 1000);
}
});
// Использование Promise
myPromise
.then((result) => {
// Этот блок выполнится при успешном выполнении Promise
console.log(result);
return "Обработано!"; // Возвращаем значение для следующего .then
})
.then((nextResult) => {
// Этот блок выполнится после предыдущего .then
console.log(nextResult);
})
.catch((error) => {
// Этот блок выполнится при отклонении Promise
console.error(error);
})
.finally(() => {
// Этот блок выполнится всегда, независимо от результата
console.log("Promise завершен.");
});