Эта статья является продолжением статьи Как обрабатывать промисы в различных сценариях в 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. ООО за то, что побудили меня написать статью.