JavaScript метод Promise.resolve()

JavaScript Promise

Определение и применение

JavaScript метод .resolve()ECMAScript 2015 объекта Promise возвращает объект Promise, который был успешно выполнен с заданным значением (изменяет состояние объекта Promise на fulfilled - успешное выполнение). Метод .resolve()ECMAScript 2015, как правило, используется для преобразования какого-то значения в объект Promise.

Поддержка браузерами

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
.resolve()ECMAScript 201532.029.019.08.0НетДа

JavaScript синтаксис:

Promise.resolve(value);

value - Anything, или Promise, или Object (thenable)

Спецификация

ECMAScript 2015 (6th Edition, ECMA-262)

Значения параметров

ПараметрОписание
valueНеобязательные аргументы (параметры), которые будут переданы для функций обратного вызова. В качестве аргумента может содержать объект Promise, или thenable объект подобный обещанию. Под thenable объектом стоит понимать любой объект (или функция), обладающий методом then(). Если значение ­распознается как обещание, или объект thenable, то его состояние просто заимствуется.

Пример использования

Простое значение в качестве аргумента

const promise = Promise.resolve("Успешно"); // Строковое значение в качестве аргумента
const promise2 = Promise.resolve(["thats", "ok"]); // Массив в качестве аргумента

promise.then(function(value) { // Если успешно выполнен (fulfilled)
  console.log(value); 
}, function (reason) { // Если завершился ошибкой (rejected)
  console.log(reason); 
});

// Успешно

// использование стрелочной функции и метода forEach
promise2.then(val => val.forEach(elem => console.log(elem)), // обработчик для успешного выполнения
                            reason => console.log(reason)); // обработчик при отклоненном выполнении

// thats
// ok                           

В этом примере мы инициализировали две переменные, которые содержат объект Promise, который был успешно выполнен с заданным значением. В первом случае это строковое значение, а во втором массив строковых значений.

Кроме того, с использованием метода then()ECMAScript 2015 добавили обработчики, вызываемые когда объект Promise имеет состояние fulfilled (успешное выполнение), или rejected (выполнение отклонено). В нашем случае всегда будет срабатывать обработчик для успешного выполнения. Обратите внимание, что мы используем метод forEach() объекта Array для возможности вывести все значения из массива.

Объект Promise в качестве аргумента

const promise  = Promise.resolve("Ok"); // изменяем состояние объекта на fulfilled (успешное выполнение)
const promise2 = Promise.resolve(promise);

promise2.then(val => console.log(val)); // обработчик для успешного выполнения

// Ok   

const promise  = Promise.reject(new Error("115")); // изменяем состояние объекта на rejected (выполнение отклонено)
const promise2 = Promise.resolve(promise);

promise2.then(val => console.log(val), // обработчик для успешного выполнения
                             err => console.log(err.message)); // обработчик при отклоненном выполнении

// 115   

В этом примере в качестве аргумента метода .resolve()ECMAScript 2015 мы использовали другой объект Promise, который автоматически заставляет второе обещание ждать результата его выполнения, заимствуя при этом его состояние.

Thenable объект в качестве аргумента

// передаем в аргументе thenable объект подобный обещанию
const promise = Promise.resolve({ 
  then: (onFulfill, onReject) => onFulfill("Ok!")
});

promise.then(val => console.log(val), // обработчик для успешного выполнения
                           err => console.log(err)); // обработчик при отклоненном выполнении
// Ok! 

В этом примере мы в качестве аргумента метода .resolve()ECMAScript 2015 передаем thenable объект подобный обещанию. С использованием метода then()ECMAScript 2015 добавили обработчики, вызываемые когда объект Promise имеет состояние fulfilled (успешное выполнение), или rejected (выполнение отклонено). В нашем случае будет срабатывать обработчик для успешного выполнения.

const thenable = { then: function(resolve) {
  throw new TypeError("Error");  // генерируем исключение
  resolve('Resolve');  // метод не будет вызван
}};

const promise = Promise.resolve(thenable)
                                                .then(val => console.log(val), // обработчик для успешного выполнения
                                                           err => console.log(err.message)); // обработчик при отклоненном выполнении
// Error 

В этом примере мы создаем переменную, содержащую thenable объект подобный обещанию. Метод объекта генерирует исключение и при этом метод .resolve()ECMAScript 2015, который содержит этот метод никогда не будет вызван, так как до этого было сгенерировано исключение. Если исключение было бы размещено после вызова метода .resolve()ECMAScript 2015, то оно не было бы вызвано.

Кроме того, мы с помощью метода then()ECMAScript 2015 добавили обработчики, вызываемые когда объект Promise имеет состояние fulfilled (успешное выполнение), или rejected (выполнение отклонено). В нашем случае будет срабатывать обработчик при отклоненном выполнении.

JavaScript Promise
×

Кажется, вы используете блокировщик рекламы :(

Этот ресурс не является коммерческим проектом и развивается на энтузиазме автора сайта, который посвящает все свое свободное время этому проекту.

Добавьте, пожалуйста, basicweb.ru в исключения блокировщика рекламы, этим вы поможете развитию проекта.