Я пытаюсь использовать шаблон асинхронного ожидания / ожидания для обработки сценария, который можно было бы считать «адом обратного вызова», если реализован иначе.
Вот крайне тупая версия кода.Реальный код содержит около 5 условных вызовов HttpClient, основанных на данных из первого вызова (не мои api ...), что является причиной того, почему я в первую очередь использую шаблон async / await.
async blah(): Promise<boolean> {
try {
let resp = await this.http.get("https://httpstat.us/500").toPromise();
console.warn("you should not see this");
// the real code will logically call the api multiple times based on conditonal data from resp
// hence the attempted usage of async/await to avoid "callback hell"
// blah() will eventually return an object.
return true;
}
catch (err) {
console.error("caught inside blah()");
throw err;
}
}
ionViewDidLoad() {
this.blah().then(data => {
console.warn('okokokok');
}).catch(error => {
console.error(error)
});
}
Что происходит, я вижу вызов на самом деле 500, но код продолжается, и на консоль выводится следующее:
polyfills.js:3 GET https://httpstat.us/500/ 500 (Internal Server Error)
main.js:927 you should not see this
main.js:940 okokokok
Как видите, он не перехватывает 500 (или любой другой).другое http-состояние, с которым я тестировал)
Устройство, с которым я тестирую, - это Pixel 2 с P, и данные консоли поступают из сеанса инспектора устройств Chrome.
Любой совет был бы весьма полезен.приветствуется.
** Редактировать: Это явно проблема с сочетанием ионного и углового ... Это должно работать ...
** Редактировать: получается на 100%Угловой вопрос ... Не сама структура, а то, как был реализован перехватчик.Я оставлю это здесь вместо того, чтобы удалять вопрос в том редком случае, когда это требуется кому-то другому.