Найти в Дзене

Promise в JavaScript

Promise в JavaScript — это объект, который представляет собой завершение (или неудачу) асинхронной операции и ее результат. Он позволяет работать с асинхронным кодом более удобно и читабельно, чем с использованием колбеков. Вот основные аспекты, связанные с Promise: Чтобы создать новый Promise, используется конструктор Promise, который принимает функцию с двумя параметрами: resolve и reject. const myPromise = new Promise((resolve, reject) => {
// Асинхронная операция
const success = true; // или false в случае ошибки
if (success) {
resolve("Операция выполнена успешно!");
} else {
reject("Произошла ошибка.");
}
}); Вот пример использования Promise: myPromise
.then(result => {
console.log(result); // "Операция выполнена успешно!"
})
.catch(error => {
console.error(error); // "Произошла ошибка."
})
.finally(() => {
console.log("Операция завершена."); // Выполняется в любом случае
}); Promise позволяет соз
Оглавление

Promise в JavaScript — это объект, который представляет собой завершение (или неудачу) асинхронной операции и ее результат. Он позволяет работать с асинхронным кодом более удобно и читабельно, чем с использованием колбеков. Вот основные аспекты, связанные с Promise:

Основные характеристики Promise

  1. Состояния Promise:Ожидание (Pending): начальное состояние, ни выполнено, ни отклонено.
    Выполнено (Fulfilled): операция завершена успешно.
    Отклонено (Rejected): операция завершена с ошибкой.
  2. Методы Promise:then(onFulfilled, onRejected): добавляет обработчики для успешного завершения и отклонения. Возвращает новый Promise, что позволяет создавать цепочки.
    catch(onRejected): добавляет обработчик для отклонения. Это эквивалентно вызову then(null, onRejected).
    finally(onFinally): добавляет обработчик, который будет выполнен в любом случае, независимо от того, завершился ли Promise успешно или с ошибкой.

Создание Promise

Чтобы создать новый Promise, используется конструктор Promise, который принимает функцию с двумя параметрами: resolve и reject.

const myPromise = new Promise((resolve, reject) => {
// Асинхронная операция
const success = true; // или false в случае ошибки

if (success) {
resolve("Операция выполнена успешно!");
} else {
reject("Произошла ошибка.");
}
});

Использование Promise

Вот пример использования Promise:

myPromise
.then(result => {
console.log(result); // "Операция выполнена успешно!"
})
.catch(error => {
console.error(error); // "Произошла ошибка."
})
.finally(() => {
console.log("Операция завершена."); // Выполняется в любом случае
});

Цепочки Promise

Promise позволяет создавать цепочки, что делает код более читаемым:

const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Данные получены");
}, 1000);
});
};

fetchData()
.then(data => {
console.log(data); // "Данные получены"
return "Обработка данных";
})
.then(processedData => {
console.log(processedData); // "Обработка данных"
})
.catch(error => {
console.error("Ошибка:", error);
});

Promise.all и Promise.race

  • Promise.all(iterable): принимает массив Promise и возвращает новый Promise, который выполняется, когда все переданные Promise выполнены или один из них отклонен.

Promise.all([promise1, promise2])
.then(results => {
console.log(results); // Массив результатов
})
.catch(error => {
console.error("Ошибка:", error);
});

  • Promise.race(iterable): возвращает новый Promise, который выполняется или отклоняется, как только один из переданных Promise выполнен или отклонен.

Promise.race([promise1, promise2])
.then(result => {
console.log("Первый завершенный:", result);
})
.catch(error => {
console.error("Ошибка:", error);
});

Заключение

Promise — это мощный инструмент для работы с асинхронным кодом в JavaScript. Он позволяет избежать "адского колбека" и делает код более структурированным и понятным. С помощью Promise можно легко обрабатывать успешные результаты и ошибки, а также создавать сложные цепочки асинхронных операций.

Если вам нужен сайт:

► Ссылка на мой профиль: https://vk.com/bjiax

►Ссылка на курсы по программированию в geekbrains: https://go.redav.online/37de0fa84a60b771 ( эта реферальная ссылка, если через нее приобретешь курс, мне будут бонусы, заранее спасибо)

►Ссылка на rutube: https://rutube.ru/channel/23484297/

►Донат на улучшения качества видео:

https://yoomoney.ru/to/410013082178995