Функция Promise.resolve () в JavaScript

Обещание — это конкретный объект JavaScript, который связывает «производящий код» и «потребляющий код» вместе. Говоря обычным языком, это «список подписки». Это похоже на концепцию производителей и потребителей.

Javascript promise.resolve ()

Javascript Promise.resolve () — это встроенная функция, которая возвращает объект Promise, разрешенный с заданным значением. Если значением является обещание, это обещание возвращается; если значение является thenable (т. е. имеет метод then ), то возвращенное обещание будет « следовать ”Этот thenable , принимающий его конечное состояние; в противном случае возвращенное обещание будет выполнено со значением.

«Производящий код» займет столько времени, сколько необходимо для получения обещанного результата, и « обещание ”Делает результат доступным для всех подписчиков, когда он готов.

Если задание завершено успешно, с результатом значение.

Синтаксис

Синтаксис для Javascript Promise.resolve () следующий.

 Promise.resolve (value); 

Параметры

Это обещание разрешает параметр значения. Это также может быть Promise или подлежащее разрешению.

обещание разрешается с заданным значением или обещание, переданное как значение, если значение было объектом обещания. Статическая функция Promise.resolve () возвращает выполненное Promise .

Пример

Давайте рассмотрим простой пример. Напишите следующий код внутри файла app.js .

//app.jsconst p1 = new Promise ((resolve, reject) => {//eslint  -disable-line no-unused-varssetTimeout (() => {resolve ('AppDividend');}, 1000);}); p1.then (values ​​=> {console.log (values);}); 

Сохраните файл, перейдите в терминал и запустите файл, набрав node app команда.

Здесь можно использовать обещание p1, и в конечном итоге возвращает значение

Разрешение массива

Давайте возьмем простой пример, разрешающий массив.

//app.jsconst p1 = new Promise ((resolve, reject) => {//eslint-disable-line no-unused-varssetTimeout (()  => {resolve ([18, 21, 22]);}, 1000);}); p1.then (values ​​=> {console.log (values ​​[0]);}]; 

Он вернет значение 18 .

р>

Выполнение другого обещания

Давайте рассмотрим следующий пример.

//app.jsconst p = Promise. resolve (21); const p1 = new Promise ((resolve, reject) => {//eslint-disable-line no-unused-varssetTimeout (() => {p.then (value => console.log (значение)  );}, 1000);}); p1.then (values ​​=> {console.log (values);}); 

Здесь мы разрешаем обещание внутри обещания. Таким образом, окончательный результат будет значением первого обещания.

Разница между Promise.resolve () и new Promise ()

Синтаксис Promise.resolve () следующий.

 Promise.resolve (x); 

, который в основном совпадает с

 new Promise (function (r) {r (x);}); 

здесь есть тонкость.

Функции, возвращающие обещания, обычно должны гарантировать, что они не будут генерировать синхронно, поскольку они могут вызывать асинхронно.

Чтобы предотвратить непредвиденные результаты и условия гонки — выбросы обычно преобразуются в возвращенные отклонения.

Имея это в виду — когда спецификация была создана, конструктор обещания бросает безопасно.

Обычно Promise.resolve () используется для приведения объектов и внешних обещаний (thenables) к обещаниям. Это его вариант использования.

Заключение

Правило таково: если функция находится внутри, то обработчик возвращает значение, обещание разрешает/отклоняет это значение.

Если функция возвращает обещание, то происходит следующее, тогда предложение будет предложением then в обещании, которое вернула функция.

Делаем вещи особенными внутри функции-обработчика then:

1) Когда x является значением (числом, строкой и т. д.):

  1. Возвращает x эквивалентно return Promise.resolve (x)
  2. Выбрасывает x эквивалентно return Promise.reject (x)

2) Когда x — это обещание, которое уже рассчитано (больше не ожидает):

  1. Он возвращает x эквивалентно возврату Promise.resolve (x), если обещание уже было решено.
  2. Он возвращает x эквивалентно возврату Promise.reject (x), если обещание уже было отклонено.

3) Когда x является обещанием который находится в ожидании: return x вернет ожидающее обещание, и оно будет оценено в последующем.

Наконец, пример функции Promise.resolve () завершен.

Рекомендуемые сообщения

Javascript Promise reject ()

Javascript Promise all ()

Гонка обещаний Javascript ()

Оцените статью
nanomode.ru
Добавить комментарий