Конструктор Promise()

Переклад цієї статті ще не завершено. Будь ласка, допоможіть перекласти цю статтю з англійської мови

Конструктор Promise використовується переважно для того, щоб загортати функції, які не підтримують проміси початково.

Синтаксис

new Promise(executor);

Параметри

executor
Функція, яка передається з аргументами resolve та reject. Функція executor (виконавець) виконується негайно, реалізацією проміса, передаючи функції resolve та reject (виконавець викликається ще до того, як конструктор Promise повертає створений об'єкт). Функції resolve та reject, коли вони викликаються, відповідно, вирішують або відхиляють проміс. Виконавець, зазвичай, ініціює якісь асинхронні дії, і, як тільки вони завершуються, викликає або функцію resolve, щоб вирішити проміс, або відхиляє його в разі виникнення помилки. Якщо функція-виконавець викинула помилку, проміс відхиляється. Повернене значення виконавця ігнорується.

Приклади

Об'єкт Promise створюється за допомогою ключового слова new та свого конструктора. Цей конструктор приймає своїм аргументом функцію, що називається "функцією-виконавцем". Ця функція має приймати дві функції в якості параметрів. Перша з цих функцій (resolve) викликається, коли асинхронна задача завершується успішно та повертає результат задачі. Друга (reject) викликається, коли задача завершується неуспішно, та повертає причину невдачі, яка, зазвичай, є об'єктом помилки.

const myFirstPromise = new Promise((resolve, reject) => {
  // зробити щось асинхронне, що зрештою викличе або:
  //
  //   resolve(someValue)        // виконаний
  // або
  //   reject("причина невдачі")  // відхилений
});

Щоб надати функцію з функціональністю промісу, просто зробіть, щоб вона повертала проміс:

function myAsyncFunction(url) {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest() 
    xhr.open("GET", url) 
    xhr.onload = () => resolve(xhr.responseText) 
    xhr.onerror = () => reject(xhr.statusText) 
    xhr.send() 
  });
}

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

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

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Promise() constructorChrome Full support 32Edge Full support 12Firefox Full support 29
Notes
Full support 29
Notes
Notes Constructor requires a new operator since version 37.
IE No support NoOpera Full support 19Safari Full support 8
Notes
Full support 8
Notes
Notes Constructor requires a new operator since version 10.
WebView Android Full support 4.4.3Chrome Android Full support 32Firefox Android Full support 29
Notes
Full support 29
Notes
Notes Constructor requires a new operator since version 37.
Opera Android Full support 19Safari iOS Full support 8
Notes
Full support 8
Notes
Notes Constructor requires a new operator since version 10.
Samsung Internet Android Full support 2.0nodejs Full support 0.12
Notes
Full support 0.12
Notes
Notes Constructor requires a new operator since version 4.

Legend

Full support  
Full support
No support  
No support
See implementation notes.
See implementation notes.

Див. також