Ser*_*lla 7 javascript system.reactive rxjs
在RxJS中,Observable实例的catch方法和onErrorResumeNext方法之间似乎差别很小,除了onErrorResumeNext将原始Observable与Observable参数连接起来之外是否发生错误.
如果是这样的话,那命名有点令人困惑吗?因为如果出现错误,其onErrorResumeNext工作方式与完全相同catch:
var testObservable = Rx.Observable.return(1).concat(Rx.Observable.throw("Error"))
// Both onError and onCatch will emit the same result: 1, 2
var onError = testObservable.onErrorResumeNext(Rx.Observable.return(2));
var onCatch = testObservable.catch(Rx.Observable.return(2));
Run Code Online (Sandbox Code Playgroud)
是否有充分的理由不总是使用catch?
他们是独特的.
正如您所指出的,两个运营商都同样处理故障; 但是,他们在完成工作方面有所不同.
OnErrorResumeNext 只是一个具有以下语义的专业化:
"我查询串接 2个可观,如果第一观察到的失败,然后继续与下一个观察的呢."
Catch 更普遍的是:
"我的查询避免了失败.如果observable失败,那么继续使用另一个observable."
如果你在连接的边界上避免失败,那么使用OnErrorResumeNext; 否则,避免一般使用失败Catch.