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

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

问题描述

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

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

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

问题在于所有这些请求一旦完成就必须采取措施.

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

推荐答案

您需要使用 mergeMap forkJoin

使用forkJoin可以同时触发并行请求,直到所有请求完成为止.

using forkJoin you can fire parallel request at time and it will till all request 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天全站免登陆