Promise.resolve()

Метод Promise.resolve() повертає об'єкт Promise, вирішений з наданим значенням. Якщо значенням є проміс, то цей проміс буде повернено; якщо значенням є промісоподібний об'єкт (thenable) (такий, що має метод "then"), то повернений проміс буде його "дотримуватись", приймаючи його кінцевий стан; у іншому випадку повернений проміс буде виконаний з наданим значенням. Функція вирівнює вкладені шари промісоподібних об'єктів (наприклад, проміс, що вирішується з промісом, який вирішується з чимось ще) у єдиний шар.

Синтаксис

Promise.resolve(value);

Параметри

value
Аргумент, з яким буде вирішений даний Promise. Також він може бути промісом або промісоподібним об'єктом.

Значення, яке повертається

Об'єкт Promise, вирішений з наданим значенням, або проміс, переданий в якості значення, якщо значення було промісом.

Опис

Статична функція Promise.resolve повертає вирішений об'єкт Promise.

Приклади

Використання статичного методу Promise.resolve

Promise.resolve('Success').then(function(value) {
  console.log(value); // "Успіх"
}, function(value) {
  // не викликається
});

Вирішення проміса масивом

var p = Promise.resolve([1,2,3]);
p.then(function(v) {
  console.log(v[0]); // 1
});

Вирішення проміса іншим промісом

var original = Promise.resolve(33);
var cast = Promise.resolve(original);
cast.then(function(value) {
  console.log('значення: ' + value);
});
console.log('original === cast ? ' + (original === cast));

// порядок виведення:
// original === cast ? true
// значення: 33

Перевернутий порядок логів спричинений тим фактом, що обробники then викликаються асинхронно. Дивіться, як працює then тут.

Вирішення промісоподібних об'єктів та викидання помилок

// Вирішення промісоподібного об'єкта
var p1 = Promise.resolve({ 
  then: function(onFulfill, onReject) { onFulfill('виконаний!'); }
});
console.log(p1 instanceof Promise) // true, об'єкт передано у проміс

p1.then(function(v) {
    console.log(v); // "виконаний!"
  }, function(e) {
    // не викликається
});

// Промісоподібний об'єкт викидає помилку перед зворотнім викликом
// Проміс відхиляється
var thenable = { then: function(resolve) {
  throw new TypeError('Помилка');
  resolve('Вирішення');
}};

var p2 = Promise.resolve(thenable);
p2.then(function(v) {
  // не викликається
}, function(e) {
  console.log(e); // TypeError: Помилка
});

// Промісоподібний об'єкт викидає помилку після зворотного виклику
// Проміс вирішується
var thenable = { then: function(resolve) {
  resolve('Вирішення');
  throw new TypeError('Помилка');
}};

var p3 = Promise.resolve(thenable);
p3.then(function(v) {
  console.log(v); // "Вирішення"
}, function(e) {
  // не викликається
});

Специфікації

Специфікація
ECMAScript Latest Draft (ECMA-262)
The definition of 'Promise.resolve' in that specification.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
resolve()Chrome Full support 32Edge Full support 12Firefox Full support 29IE No support NoOpera Full support 19Safari Full support 8WebView Android Full support 4.4.3Chrome Android Full support 32Firefox Android Full support 29Opera Android Full support YesSafari iOS Full support 8Samsung Internet Android Full support 2.0nodejs Full support 0.12

Legend

Full support  
Full support
No support  
No support

Дивіться також