代码之家  ›  专栏  ›  技术社区  ›  Donovant

在RxJS中,当其中一个http调用失败时,如何保持从多个不同的http调用独立收集结果?

  •  0
  • Donovant  · 技术社区  · 4 年前

    我用过zip和forkJoin

    return forkJoin({
      a: this.getA(),
      b: this.getB(),
      c: this.getC()
    })
    

    问题是,如果其中一个调用失败,所有调用都会被取消,而我仍然希望从没有失败的调用中收集数据

    1 回复  |  直到 4 年前
        1
  •  1
  •   Juan Vicente Berzosa Tejero    4 年前

    要解决你的问题,你必须 捕捉错误并在内部可观察范围内正确处理它

    return forkJoin({
      a: this.getA(),
      b: this.getB(),
      c: this.getC().pipe(catchError(error => of(error)))
    })
    
    // If getC fails, you would get A and B
    

    我的问题是,你是否必须只在最后一个元素中添加这种处理方法,还是在所有元素中添加这种处理方法。您必须亲自尝试,请在评论中告诉我。

    看见 HERE 示例5:当一个内部可观察到错误时获得成功结果

    推荐文章