【发布时间】:2018-04-29 17:15:21
【问题描述】:
我需要调用 api 并从端点获取所有项目。但是,我们一次只能获取 100 个项目。
响应如下所示:
{
elements: Array<any>,
totalCount: number,
}
端点将是/api/items?drop=${drop}&take=100,drop 用于分页。
我认为这将在某处涉及 scan 和 takeWhile 运算符。这是我得到的:
const subject = new Subject();
const rec = subject.pipe(
scan((acc: number, curr: number) => (curr + 100), 0),
switchMap(drop => this.http.get(`api/items?drop=${drop}&take=100`)),
takeWhile((r: any) => r.elements.length === 100),
tap(r => subject.next())
);
【问题讨论】:
-
你知道会有多少商品吗?
-
只返回没有记录从 API 并增加直到没有
-
@Antoniossss 不,我不知道物品的数量
-
使用变量“page”(取值0,1,2,...),然后从page*100询问到(page+1)*100-1,或者使用slice (页*100,(页+1)*100)