Какие знаешь методы Promise
1️⃣ Как кратко ответить
Promise имеет несколько ключевых методов: then(), catch(), finally(), all(), allSettled(), race(), any(). Эти методы позволяют работать с асинхронными операциями, управлять их выполнением и обрабатывать результаты.
2️⃣ Подробное объяснение темы
Promise — это объект в JavaScript, который представляет завершение или неудачу асинхронной операции. Он позволяет писать асинхронный код, который легче читать и поддерживать. Методы Promise помогают управлять этими операциями и обрабатывать их результаты.
Основные методы Promise
-
then()Метод
then()используется для обработки успешного выполнения Promise. Он принимает два аргумента: функцию, которая будет вызвана, если Promise выполнится успешно, и функцию, которая будет вызвана, если Promise завершится с ошибкой.const promise = new Promise((resolve, reject) => { // Асинхронная операция resolve('Успех'); }); promise.then(result => { console.log(result); // 'Успех' });Здесь
resolve('Успех')вызывает первую функцию вthen(), выводя 'Успех'. -
catch()Метод
catch()используется для обработки ошибок в Promise. Он принимает одну функцию, которая будет вызвана, если Promise завершится с ошибкой.const promise = new Promise((resolve, reject) => { // Асинхронная операция reject('Ошибка'); }); promise.catch(error => { console.log(error); // 'Ошибка' });В этом примере
reject('Ошибка')вызывает функцию вcatch(), выводя 'Ошибка'. -
finally()Метод
finally()выполняется после завершения Promise, независимо от того, было ли оно успешным или с ошибкой. Он не принимает аргументов.const promise = new Promise((resolve, reject) => { // Асинхронная операция resolve('Успех'); }); promise.finally(() => { console.log('Завершено'); });Здесь
finally()будет выполнен послеresolve('Успех'), выводя 'Завершено'.
Методы для работы с несколькими Promise
-
all()Метод
all()принимает массив Promise и возвращает новый Promise, который выполнится, когда все Promise в массиве будут выполнены. Если один из Promise завершится с ошибкой,all()завершится с ошибкой.const promise1 = Promise.resolve(3); const promise2 = 42; const promise3 = new Promise((resolve, reject) => { setTimeout(resolve, 100, 'foo'); }); Promise.all([promise1, promise2, promise3]).then(values => { console.log(values); // [3, 42, 'foo'] });Здесь
all()ждет выполнения всех Promise и возвращает массив их результатов. -
allSettled()Метод
allSettled()возвращает Promise, который выполнится, когда все переданные Promise будут либо выполнены, либо отклонены. Он возвращает массив объектов, каждый из которых описывает результат каждого Promise.const promise1 = Promise.resolve(3); const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'Ошибка')); Promise.allSettled([promise1, promise2]).then(results => { console.log(results); // [{ status: 'fulfilled', value: 3 }, { status: 'rejected', reason: 'Ошибка' }] });allSettled()позволяет узнать статус каждого Promise, независимо от их результата. -
race()Метод
race()возвращает Promise, который выполнится или завершится с ошибкой, как только один из переданных Promise выполнится или завершится с ошибкой.const promise1 = new Promise((resolve, reject) => { setTimeout(resolve, 500, 'один'); }); const promise2 = new Promise((resolve, reject) => { setTimeout(resolve, 100, 'два'); }); Promise.race([promise1, promise2]).then(value => { console.log(value); // 'два' });В этом примере
race()возвращает результат Promise, который завершится первым. -
any()Метод
any()возвращает Promise, который выполнится, как только один из переданных Promise выполнится успешно. Если все Promise завершатся с ошибкой,any()завершится с ошибкой.const promise1 = Promise.reject('Ошибка 1'); const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'Успех')); const promise3 = Promise.reject('Ошибка 2'); Promise.any([promise1, promise2, promise3]).then(value => { console.log(value); // 'Успех' });Здесь
any()возвращает результат первого успешно выполненного Promise.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться