Где-то читал, что нехорошо кидаться ошибками изнутри
async
функций — исключения только для совсем кривых ошибочных случаев. Мол, надо только возвращать rejected Promise.
Вожусь с React компонентом, который проходит цепочку асинхронных действий.
Процесс можно остановить кнопкой в любой момент. Для этого использую
AbortController() чтобы останавливать асинхронные этапы работы со сторонним SDK или
fetch()
запросы на бэкенд.
Во многих местах кода, приходится вставлять одинаковые строки, что-то типа
await someAsyncSdkCall();
// не остановили ли?
if (this.isAborted()) {
return promiseAborted();
}
довольно много раз получается одинаковый код – после каждого асинхронного вызова. Можно было бы сократить до однострочного
this.throwIfAborted();
Что правильнее — повторять три строки десятки раз, или кидаться
помётом изнутри
async
функции? Может, есть ещё способ проверять в цепочке асинхронных действий на каждом шаге, не пора ли всё бросить
и уйти в отпуск?