Конструктор 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()
  });
}

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

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

BCD tables only load in the browser

Див. також