Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник JavaScript

Promise

Обещание результата, который будет готов позже: успех или ошибка.

Доступно с: ES2015

Синтаксис

new Promise(executor)

Параметры

ПараметрТипОписание
executorFunctionФункция, которая запускает работу и вызывает resolve(значение) при успехе или reject(ошибка) при неудаче.

Возвращаемое значение

PromiseОбъект-обещание результата, который появится позже.

Примеры

Промис, который выполнится через 100 мс:

const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
 
await delay(100);
console.log('100 ms later');

Результат:

100 ms later

Успех и ошибка:

function checkAge(age) {
  return new Promise((resolve, reject) => {
    if (age >= 18) resolve('Access granted');
    else reject(new Error('Too young'));
  });
}
 
checkAge(20).then((message) => console.log(message));
checkAge(15).catch((error) => console.log(error.message));

Результат:

Access granted
Too young

Примечания

У промиса три состояния: ожидание (pending), выполнен (fulfilled) и отклонён (rejected). Состояние меняется один раз: повторные вызовы resolve и reject игнорируются.

Сами промисы создают редко — чаще их возвращают готовые функции, например fetch(). Результат удобнее всего получать через await.

См. также

  • Promise.prototype.then — Задаёт, что сделать с результатом промиса.
  • async function — Функция, которая всегда возвращает промис и внутри которой можно использовать await.
  • await — Ждёт результата промиса и возвращает его значение.
  • Promise.all — Ждёт выполнения всех промисов параллельно.

Вопросы и ответы по теме

В учебнике

  • Промисы — Промисы в JavaScript: состояния промиса, then, catch, finally, создание промиса через new Promise и цепочки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.