【问题标题】:How do I subscribe to multiple Observables individually and know when they are all finished?如何单独订阅多个 Observable 并知道它们何时全部完成?
【发布时间】:2020-11-06 23:57:45
【问题描述】:

我现在遇到过几次问题,但我真的不知道如何用它来获得我在 Google/SA 上寻找的答案,所以就这样吧。

我有多个 http observables。假设我要删除对象 1、2 和 3。我一个接一个地向myapi/{id} 发送三个 http 删除请求。我可以订阅每个请求,因为每个请求都返回一个 Observable。这让我可以在每个都完成或使用myHttpObservable.subscribe(successFn, failFn) 失败后做一些事情。

这就是问题所在。我现在想知道所有三个删除请求何时完成。为此,我可以使用forkJoin([deleteRequest1, deleteRequest2, deleteRequest3],但 forkJoin 需要一个 Observable 数组并订阅它们。我现在不能单独订阅它们,因为 forkJoin 想要一个数组或 Observables。

那么我如何使用自己的成功和失败函数订阅每个 Observable,同时又知道这三个函数何时完成?

【问题讨论】:

    标签: rxjs-observables


    【解决方案1】:

    forkJoin 将按照您提供的顺序返回每个 observable 的响应。例如,你有三个 observables

    const source1$ = of("Observable 1");
    const source2$ = of("Observable 2");
    const source3$ = of("Observable 3");
    

    您将像这样在 forkJoin 中获得每个人的订阅

    forkJoin([source1$, source2$, source3$]).subscribe(([res1, res2, res3]) => {
      console.log(res1);
      console.log(res2);
      console.log(res3);
    });
    

    这里是sample

    谢谢。

    【讨论】:

      猜你喜欢
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      相关资源
      最近更新 更多