热观察错误处理

时间:2017-01-11 09:36:27

标签: javascript rxjs rxjs5

我有一个可观察的,从`输入中侦听keyup事件。

在每个keyup上,它向服务器发出请求,如果没有任何值,则会抛出异常。

.map(function (oResp) {
  if (oResp.data.results.length === 0) {
    throw new Error(self.getTextBundle("insPlantInvalid"));
  } 
  return oResp.data.results;
})

抛出异常后,observable将不再监听该事件。

rxjs中的异常处理是否以这种方式工作?

2 个答案:

答案 0 :(得分:1)

是的,这是正确的行为。异常会发出operator send an error通知。 errorcomplete信号都必须是最后发出的信号,同时也是cause unsubscription

要重新订阅或处理错误,有retry()retryWhen()catch()onErrorResumeNext()等运营商。我想你已经知道了。

答案 1 :(得分:0)

.catch()也可用于处理错误。

this.http.get('url').map(res => res.json()).catch(() => Observable.of({error: true})

如果出现错误,则返回{error: true}并且可观察到的事件不会中断。但是在这个响应旁边的map运算符中需要处理这种情况。