首页 > 解决方案 > RxJS:即使一个或多个失败,如何等待几个 observable

问题描述

我使用zip运算符等待三个可观察对象并同时处理结果:

Observable
   .zip(
      this.sapService.getProductSpareParts(this.identForm.get('ident').value),
      this.mediacacheService.getMediaItemsByIdent(this.identForm.get('ident').value),
      this.mediacacheService.getMetaInfos(this.identForm.get('ident').value)
    )
    .subscribe((results: any) => {
      // do stuff
    });

这三个 observables 中的一个或多个可能失败并返回 500 结果。在这种情况下,所有其他待处理的 observables 将被取消。

如何忽略错误的 observables,不取消它们并等待剩余的 observables 完成,以处理成功的 observables 的结果?

标签: javascriptangulartypescriptrxjs

解决方案


看看下面的解决方案,我认为这将解决您的问题

var source = Rx.Observable.onErrorResumeNext(
     Rx.Observable.just(42),
     Rx.Observable.throw(new Error()),
     Rx.Observable.just(56),
     Rx.Observable.throw(new Error()),
     Rx.Observable.just(78)
   );

var subscription = source.subscribe(
     data => console.log(data)
   ); 

结果

// => 42

// => 56

// => 78


推荐阅读