У меня есть приложение, которое отображает список вопросов.Когда приложение запускается, я хочу проверить, хранятся ли у нас какие-либо вопросы, а если нет, то мы делаем запрос, чтобы получить вопросы из облака.
У меня естьпростая функция, которая возвращает POST-запрос:
getQuestions() {
return this.http.post(AppSettings.CI_GET_QUESTIONS, '')
}
Если я подпишусь на это Observable:
this.dataService.getQuestions()
.map(questions => questions.json())
.map((questions) => {
return questions;
})
.subscribe((success) => {
console.log("### sc:", success)
})
, я получу распечатанный список вопросов, так чтопока все хорошо.
Тем не менее, я пошел проверить, хранятся ли у нас вопросы локально, а если нет, то иди и получи вопросы из облака.Итак, я написал это Observable, чтобы сделать это:
this.storage.checkQuestionsLocally()
.catch((error) => {
return this.dataService.getQuestions()
.map(questions => questions.json())
.map((questions) => {
return questions;
})
})
.subscribe((done) => {
console.log("### questions done:", done)
}, (error) => {
console.log("### error during getting questions:", error)
}, () => {
console.log("### questions found routine is completed");
})
При запуске мы проверяем, есть ли у нас что-нибудь сохраненное локально, и если мы получим ошибку, то перейдем к получению вопросов.
Проблема у меня в этой catch
функции.Ошибка вызывает catch
, и код пытается выполнить запрос, но на самом деле ничего не происходит.На странице «Сеть» (Chrome Dev Tools) я вижу, что мой запрос отменен:
getQuestions (canceled) xhr polyfills.js:3 0 B 15 ms
Почему он отменяется?Разве просьба не должна просто уволить и вернуть вопросы?
Спасибо, Бенгра