Всем привет.
Есть SPA на vue.js.
Есть свой wrapper для вызовов к API. На некоторые коды ошибок реакция должна быть всегда однозначная (просто показ сообщения с текстом ошибки), на другие коды должна быть индивидуальная реакция в зависимости от...
Я хочу, чтобы сообщение об ошибках показывал wrapper, а если ошибка требует индивидуальной обработки, то не делал бы ничего.
Все общение с API построено на промисах.
Элементарный пример:
this.$apiImpl.users.index()
.then(response => {
//....
})
.catch(error => {
//....
})
.finally(() => {
//....
})
внутри $api.index() происходит
axios.get(...)
.catch(error => {
if (!...) return Promise.reject(error); // если ошибка обрабатывается индивидуально
// делаем все, что нужно (показываем сообщение)
return Promise.reject('error_handled')
})
в этом подходе дико не нравится то, что в любом catch'е, приходится проверять,
if ('error_handled' === error) return;
Есть какой-то красивый способ это решить?
Можно возвращать из wrapper'a неразрешенный промис, тогда в catch выполнение вообще не попадет (допустимо), но и finally тогда не отработает (недопустимо).
Спасибо.