I'm trying to fetch data from an API that only returns 1000 items per call, and I want to do this recursively until I have all the data.
I don't know beforehand how many items there are in total, so after every call I have to check
If the call was synchronous, I'd use something like this:
function fetch(all, start) {
const newData = getData(start, 1000);
all = all.concat(newData);
return (newData.length === 1000) ? fetch(all, all.length) : all;
}
However, the getData()
call here is asynchronous. Using a Promise.all()
doesn't work because I don't know beforehand how many calls I need so I can't prepare an array of calls.
I have the feeling I could solve this with generators or with async
/await
but I don't know how. Can anyone point me in the right direction?
In case it makes a difference, I'm using Angular 4.
This depends on how things are done in your case. Considering that getData
returns a promise, it is:
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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With