Полный цикл в digital

Обработка ошибок в Promise

Давайте теперь научимся обрабатывать исключительные ситуации, случившиеся внутри промиса. В случае возникновения такой ситуации мы должны отклонить промис с помощью специальной функции отклонения, которая автоматически попадает во второй параметр функции промиса. Внутри функции промиса мы должны вызвать resolve, если все прошло штатно, либо reject, если возникла исключительная ситуация:

let promise = new Promise(function (resolve, reject) {
  setTimeout(function () {
    let isError = false;
    if (!isError) {
      // данные промиса
      resolve([1, 2, 3, 4, 5]);
    } else {
      // ваш текст ошибки
      reject("error in promise");
    }
  }, 3000);
});

Затем в методе then параметрами вы должны передать не одну, а две функции: первая сработает, если промис сработал штатно (зарезолвился), а вторая - если сработал с ошибкой (зареджектился):

promise.then(
  function (result) {
    // выведет результат промиса
    console.log(result);
  },
  function (error) {
    // выведет текст ошибки
    console.log(error);
  }
);

Принято в функцию reject передавать не строку с ошибкой, а объект с ошибкой:

let promise = new Promise(function (resolve, reject) {
  setTimeout(function () {
    // объект с ошибкой
    reject(new Error("error in promise"));
  }, 3000);
});

Можно также выбрасывать объекты с ошибками с помощью throw - это будет эквивалентно передаче их в reject:

let promise = new Promise(function (resolve, reject) {
  setTimeout(function () {
    throw new Error("error in promise"); // эквивалентно reject
  }, 3000);
});
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг