В современной веб-разработке обещания очень полезны при работе с асинхронными потоками кода, чтобы избежать ада обратных вызовов. Обещание может быть выполнено, отложено (не разрешено / отклонено) или отклонено. Когда вы отклоняете обещание, к нему должен быть прикреплен catch
метод. Увидеть ниже:
async1(function(){ … }) .then(async2) .catch(function(e) { // Deal with any errors here })
Однако о присоединении этого catch
обработчика очень легко забыть, и, если он забыт, для объекта окна запускается событие unhandledrejection
.
В настоящее время только Chrome запускает это событие, но этого достаточно, чтобы мы могли 1. обнаруживать такие события, запускаемые в тестовом наборе (с Siesta) и 2. определять, когда это событие запускается в производственной среде (с помощью RootCause). К сожалению, в настоящее время трассировка стека недоступна, но, надеюсь, она будет добавлена в будущем. Давайте посмотрим, как мы можем обнаружить это событие, чтобы улучшить наш код!
1. Обнаружение необработанного события отказа в ваших тестах Siesta
Теперь с помощью Siesta вы можете обнаруживать и автоматически проходить тесты, если unhandledrejection
запущен, просто загрузите нашу последнюю ночную сборку Siesta или дождитесь следующего официального выпуска. Вот и все, по умолчанию это обнаружение включено. После того, как мы обновили всю компанию Siesta, мы сразу же обнаружили проблему (без дополнительных усилий).
2. Обнаружение необработанных отклонений обещаний в вашей производственной онлайн-среде.
Чтобы обнаружить это в вашем производственном коде, вы можете использовать нашу службу отладки JS под названием RootCause. По умолчанию RootCause регистрирует ошибку при запуске unhandledrejection
, и вы сможете использовать либо Live Replay, либо Video Replay, чтобы выяснить, где вам не хватает catch
.
Мы надеемся, что эта функция поможет вам обнаружить больше ошибок на более раннем этапе процесса доставки кода. В первый час добавления этой функции в RootCause мы обнаружили неработающее обещание в нашей базе кода (снимок экрана выше).
Удачной отладки!
Оставить комментарий Отменить ответ
Первоначально опубликовано на www.bryntum.com.