我有一个数组,需要使用该数组的单个数据集进行单个请求。我发现难以解决的问题是安排电话。意味着,仅当请求完成时,下一个请求才开始。我一直在寻找RxJs队列,但是我无法简单地找到解决方案。
示例:
function makeRequest(body): Observable<any> {
return someAsyncRequest(body);
}
array.forEach((entry) => {
makeRequest(entry);
});
// This is just an example how the setup is. This code does not work.
// What I need is a queue like feature in RxJs to append requests and wait before the previous one is finished.
ForkJoin可以满足您的要求
'forkJoin'等待每个HTTP请求完成,并将每个HTTP调用返回的所有可观察对象分组到单个可观察数组中,最后返回该可观察数组。
public requestDataFromMultipleSources(): Observable<any[]> {
let response1 = this.http.get(requestUrl1);
let response2 = this.http.get(requestUrl2);
let response3 = this.http.get(requestUrl3);
return forkJoin([response1, response2, response3]);
}
订阅单个可观察数组并分别保存响应。
this.dataService.requestDataFromMultipleSources().subscribe(responseList => {
this.responseData1 = responseList[0];
this.responseData2 = responseList[1];
this.responseData3 = responseList[2];
});