rxjs - 在多个服务调用上使用combineLatest时处理错误

标签 rxjs rxjs5 ngrx-effects

使用以下代码(取自ngrx/store中的@Effect())

.switchMap(({token, param1, param2}) => {
  return Observable.combineLatest(
    this.service.getData2(token, param1),
    this.service.getData2(token, param2),
    this.service.getData3(token),
  );
})

捕获错误的最简洁且正确的模式是什么? .catch 是否应该跟随每个 getData* 调用?我们不希望 .catch() 位于主 @Effect() 链的末尾,是吗?

问题类似于this one ,但有点不同,因为我在这里没有调用 .subscribe()

最佳答案

这完全取决于所需的行为。假设您正在获取要展示的 3 只动物。当一个人失败时你希望发生什么?

  • 请勿展示任何动物。 -> 在末尾添加一个catch
  • 显示其他动物。 -> 在每个数据调用中添加catch

关于rxjs - 在多个服务调用上使用combineLatest时处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43660497/

相关文章:

Angular 6 - 每 10 秒运行一次服务方法

angular - 我可以更改 Rxjs Retry 上的查询参数值吗?

redux - 使用惯用的 redux observable 排队和取消事件

angular - 在组件的构造函数中分派(dispatch)操作时不会调用 ngrx 效果

angular - 如何在不调用 next 的情况下设置新的 BehaviorSubject 值?

RxJS:如何发出原始值,然后在完成时减少?

unit-testing - 使用 typescript、karma 和 jasmine 对 RxJS Observable.timer 进行单元测试

angular - 传递给 `selectId` 实现的实体返回未定义。您可能应该提供自己的 `selectId` 实现

angular - 为什么 ngrx/redux 效果必须返回 Action ?使用像 elm 这样的 noop Action 是否被认为是不好的做法?

rxjs - 使用推荐的运算符导入调用 RxJS 共享时遇到问题