热可观察错误处理
Hot observable error handling
我有一个 observable,它监听来自 `input 的 keyup
事件。
在每个 keyup
上,它向服务器发出请求,如果没有任何值,它将抛出异常。
.map(function (oResp) {
if (oResp.data.results.length === 0) {
throw new Error(self.getTextBundle("insPlantInvalid"));
}
return oResp.data.results;
})
抛出异常后,observable 将不再监听该事件。
rxjs
中的异常处理是这样的吗?
是的,这是正确的行为。异常使得 operator send an error
notification. Both error
or complete
signals have to be the last signals emitted and both also cause unsubscription.
要重新订阅或处理错误,可以使用 retry()
、retryWhen()
、catch()
或 onErrorResumeNext()
等运算符。我猜你已经知道这些了。
.catch()
也可以用来处理错误。
this.http.get('url').map(res => res.json()).catch(() => Observable.of({error: true})
这是 return {error: true}
以防出现错误并且事件可观察性不会中断。但是在这个响应旁边的地图运算符中需要处理这种情况。
我有一个 observable,它监听来自 `input 的 keyup
事件。
在每个 keyup
上,它向服务器发出请求,如果没有任何值,它将抛出异常。
.map(function (oResp) {
if (oResp.data.results.length === 0) {
throw new Error(self.getTextBundle("insPlantInvalid"));
}
return oResp.data.results;
})
抛出异常后,observable 将不再监听该事件。
rxjs
中的异常处理是这样的吗?
是的,这是正确的行为。异常使得 operator send an error
notification. Both error
or complete
signals have to be the last signals emitted and both also cause unsubscription.
要重新订阅或处理错误,可以使用 retry()
、retryWhen()
、catch()
或 onErrorResumeNext()
等运算符。我猜你已经知道这些了。
.catch()
也可以用来处理错误。
this.http.get('url').map(res => res.json()).catch(() => Observable.of({error: true})
这是 return {error: true}
以防出现错误并且事件可观察性不会中断。但是在这个响应旁边的地图运算符中需要处理这种情况。