# Исключительные ситуации в промисах в 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`. Оберните все это в промис. Пусть промис своим возвращает результат деления единицы на сгенерированное число. Пусть промис выполнится с ошибкой, если произошло деление на ноль, и с успехом во всех остальных случаях.

←→
↑
en ru