Rx.Observable.Of错误没有被捕获

时间:2017-11-10 10:31:22

标签: angular rxjs observable rxjs5 rxjs-dom

我想从localStorage返回令牌并捕获错误。

Observable.of(JSON.parse(localStorage.getItem('currentUser')).token)
.catch((er) => Observable.of(console.log(er))

但它没有抓住它。有趣的是当我使用try catch方法时,我可以捕获错误

  try {
      return Observable.of(JSON.parse(localStorage.getItem('currentUser')).token);
    } catch (er) {
      console.log(er);
    }

这是什么原因?希望有人给出建议。enter image description here 感谢

1 个答案:

答案 0 :(得分:1)

因为错误在结果传递到Observable.of之前被抛出。这与RxJS无关,这就是JS解释器执行语句的顺序。

你可以这样做:

Observable.defer(() => Observable.of(JSON.parse(localStorage.getItem('currentUser')).token))
  .catch(???) // returning Observable.of(console.log(er) is probably useless