根据上一个请求执行多个请求

时间:2019-07-22 08:56:02

标签: javascript angular typescript rxjs

我在服务(角度)中有一个方法,该方法用作通用方法,可从json api规范端点获取资源列表。

每个请求的端点限制为10个资源,并且它们返回元信息,例如页面总大小。

在这种方法中,我要执行的操作是如果页面大小为1则执行请求,然后只返回请求,但是如果页面大小大于1则我要遍历并映射所有内容资源在一起。

例如,如果我正在请求博客帖子,并且我有100个。页面大小限制为10个,我将收到这样的响应...

{
    "data": [
        ...
    ],
    "paginationMeta": {
        "pageSize": 10,
        "totalItems": 100
    }
}

获得此信息后,我想循环10次以获取其余数据并将其组合在一起。

我目前有此代码...

return this.apiService.list('posts').pipe(switchMap((response: any) => {
    if (response.paginationMeta.pageSize === 1) {
        of(response);
    }

    // We know the current page will be 2
    let currentPage: number = 2; 
    const resource = response.data;
    const requests: any[] = [];

    while (currentPage <= response.paginationMeta.pageSize) {
        requests.push(this.apiService.list('posts', currentPage));

        currentPage++;
    }

    forkJoin(requests).pipe(map((responses: any[]) => {
        responses.forEach((apiResponse: any) => {
            resource.push(apiResponse);
        });

        return of(resource);
    }));   
});

我认为这与我要实现的目标相去甚远。我已经进行了一些谷歌搜索,但似乎找不到任何可以帮助我实现这一目标的东西。

0 个答案:

没有答案