我如何制作可追加的可观察队列?

问题描述 投票:0回答:1

我有一个数组,需要使用该数组的单个数据集进行单个请求。我发现难以解决的问题是安排电话。意味着,仅当请求完成时,下一个请求才开始。我一直在寻找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.

javascript angular typescript
1个回答
0
投票

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];
        });
© www.soinside.com 2019 - 2024. All rights reserved.