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

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

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

Внутри функции промиса мы должны вызвать 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); // выведет текст ошибки } );

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

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

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

enru