角度-Observable.catch不会触发返回的observable

时间:2018-09-19 09:55:43

标签: angular http ionic3 rxjs5 angular2-observables

我有一个显示问题列表的应用程序。当应用启动时,我想检查是否存储了任何问题,如果没有,则发出请求以从云中获取问题。

我有一个返回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开发工具的)“网络”页面上看到我的请求被取消了:

getQuestions (canceled) xhr polyfills.js:3 0 B 15 ms

为什么取消此操作?请求不应该只是引发并带回问题吗?

谢谢, 孟加拉

0 个答案:

没有答案