【发布时间】:2018-01-30 12:27:42
【问题描述】:
我正在尝试从每次调用仅返回 1000 个项目的 API 获取数据,并且我想递归地执行此操作,直到获得所有数据。
我不知道总共有多少项目,所以每次打电话后我都要检查一下
如果调用是同步的,我会使用这样的:
function fetch(all, start) {
const newData = getData(start, 1000);
all = all.concat(newData);
return (newData.length === 1000) ? fetch(all, all.length) : all;
}
但是,这里的getData() 调用是异步的。使用Promise.all() 不起作用,因为我事先不知道需要多少调用,所以我无法准备调用数组。
我觉得我可以用生成器或async/await 解决这个问题,但我不知道怎么做。谁能指出我正确的方向?
以防万一,我使用的是 Angular 4。
【问题讨论】:
标签: javascript angular recursion promise ecmascript-2017