使用 Angular RxJs Observables 处理多个 http 请求并等待所有请求完成 [英] Handle multiple http requests and wait for all to complete using Angular RxJs Observables

查看:28
本文介绍了使用 Angular RxJs Observables 处理多个 http 请求并等待所有请求完成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Observables,我有一个用例:

I am using Observables, I have a use case where:

  1. 我必须从给我 Page[]
  2. 的服务中获取页面"
  3. 对于每个页面",我必须从其他服务中获取部分"
  4. 此外,在订阅所有这些部分"时,我必须根据返回的数据执行一些操作.

担心的是,一旦所有这些请求都完成了,就必须采取一些行动.

The concern is once all of those requests are completed then have to do some action.

推荐答案

你需要使用mergeMapforkJoin

当使用 forkJoin 时,你可以同时触发并行请求,它会等待所有请求完成.

When using forkJoin you can fire parallel request at the same time and it will wait till all requests are completed.

this.http.get('/api/pages/')
    .map((res: any) => res.json())
    .mergeMap((pages: any[]) => {
      if (pages.length > 0) {
        return Observable.forkJoin(
          pages.map((page: any) => {
            return this.http.get('/api/sections/' + page_id)
              .map((res: any) => {
                let section: any = res.json();
                // do your operation and return
                return section;
              });
          });
        );
      }
      return Observable.of([]);
    });
}

这篇关于使用 Angular RxJs Observables 处理多个 http 请求并等待所有请求完成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆