Эта статья является продолжением статьи Как обрабатывать промисы в различных сценариях в javascript.

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

Начнем со сценария 3, в котором мы использовали асинхронное ожидание для написания программы в синхронном режиме и требовали обработки отклоненных обещаний.

Код с проблемой:

Если делитель не равен нулю:
Ввод:
Введите делимое: 10
Введите делитель: 5
Выход: 2

Если делитель равен нулю:
Ввод:
Введите делимое: 10
Введите делитель: 0
Вывод:
(node:928) UnhandledPromiseRejectionWarning: делитель не может быть равен нулю
(используйте `node — trace-warnings…`, чтобы показать, где было создано предупреждение)
(node:928 ) UnhandledPromiseRejectionWarning: отклонение необработанного обещания. Эта ошибка возникла либо из-за броска внутри асинхронной функции без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch(). Чтобы завершить процесс узла при отклонении необработанного обещания, используйте флаг CLI `—unhandled-rejections=strict` (см. https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (идентификатор отклонения: 2)
(узел:928) [DEP0018] Предупреждение об устаревании: отклонение необработанных обещаний устарело. В будущем отказы от обещаний, которые не будут обработаны, завершат процесс Node.js с ненулевым кодом выхода.

Решение. Лучший способ справиться с отклонением промиса в случае асинхронного ожидания — поместить часть кода, которая может вызвать отклонение, в try catch.

Спасибо Virtual Cybertrons Pvt. ООО за то, что побудили меня написать статью.