使用Angular RxJs Observables处理多个http请求并等待所有请求完成 [英] Handle multiple http requests and wait for all to complete using Angular RxJs Observables
本文介绍了使用Angular RxJs Observables处理多个http请求并等待所有请求完成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Observables,我有一个用例,其中:
I am using Observables, I have a use case where:
- 我必须从服务中获取页面",这给了我
Page[]
- 对于每个页面",我都必须从其他服务中获取部分"
- 还要订阅所有这些部分",我还必须根据返回的数据执行一些操作.
问题在于所有这些请求一旦完成就必须采取措施.
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屋!
查看全文