Skip to content

Instantly share code, notes, and snippets.

@1isten
Created January 14, 2020 13:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 1isten/0fa6006112a0a51380af4b9f724498aa to your computer and use it in GitHub Desktop.
Save 1isten/0fa6006112a0a51380af4b9f724498aa to your computer and use it in GitHub Desktop.
recursively fetch Laravel paginated api
function rFetch(url) {
return new Promise((resolve, reject) => {
const list = [];
const getData = async url => {
try {
await new Promise((resolve, reject) => {
setTimeout(() => resolve(), 1000); // force delay~
});
const { data } = await axios.get(url);
console.log(data.current_page);
list.push(...data.data);
let nextPageUrl = data.next_page_url;
if (nextPageUrl) {
nextPageUrl = nextPageUrl.replace(process.env.API_PROXY_URL, '');
getData(nextPageUrl);
} else {
resolve(list);
}
} catch (error) {
reject(error);
}
};
getData(url);
});
}
@1isten
Copy link
Author

1isten commented Jan 14, 2020

(async () => {
  try {
    console.log(await rFetch('/api/data'));
  } catch (error) {
    console.error(error.message);
  }
})();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment