我正在尝试从每次调用仅返回 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。
这取决于您的情况是如何完成的。考虑到getData
返回一个承诺,它是:
async function fetch(all, start) {
const newData = await getData(start, 1000);
all = all.concat(newData);
return (newData.length === 1000) ? await fetch(all, all.length) : all;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)