【发布时间】:2019-11-12 14:08:52
【问题描述】:
我有三个可观察的 ob1、ob2、ob2,它们都是 API 调用,我需要按顺序执行它们,并将值作为数组发出,如果有任何错误,我希望错误被捕获catchError 并停止进一步的 api 调用,例如:
someCombine(ob1, ob2.pipe(tap(val=> doSomething)), ob3.pipe(tap(val=>
doSomething))).pipe(catchError((err)=> of(err))).subscribe(combinedVal=>{
if(err) {
processErr
}
else
doSomething
});
我尝试过使用 zip
zip(ob1, ob2.pipe(tap(val=> doSomething)), ob3.pipe(tap(val=>
doSomething))).pipe(catchError((err)=> of(err))).subscribe(combinedVal=>{
if(err) {
processErr
}
else
doSomething
});
但是 zip 将在第一个完成之前开始下一个 observable,我已经尝试过 concat
concat(ob1, ob2.pipe(tap(val=> doSomething)), ob3.pipe(tap(val=>
doSomething))).pipe(catchError((err)=> of(err))).subscribe(combinedVal=>{
if(err) {
processErr
}
else
doSomething
});
但是对于每个单独的可观察完成,这些值都是单独发出的。
我该如何处理这种情况。
【问题讨论】:
-
concat(...).pipe(bufferCount(3))
-
concat(...).pipe(toArray())
标签: rxjs observable