Исключительные ситуации в промисах в JavaScript

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

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(function() {
    ...
  }, 3000);
});

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

javascriptlet 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 параметрами вы должны передать не одну, а две функции: первая сработает, если промис сработал штатно (зарезолвился), а вторая - если сработал с ошибкой (зареджектился):

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

Как правило, приведенный выше код записывают более компактно, вот так:

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

Сделайте асинхронный код, который будет генерировать случайные числа от 0 до 5. Оберните все это в промис. Пусть промис своим результатом возвращает результат деления единицы на сгенерированное число. Пусть промис выполнится с ошибкой, если произошло деление на ноль, и с успехом во всех остальных случаях.