Javascript Axios-查询和存储分页响应数据的简单方法

Javascript Axios-查询和存储分页响应数据的简单方法,javascript,axios,concat,Javascript,Axios,Concat,我有一个基本的异步函数,用于检索使用Axios的用户列表。我正在调用的话语API的响应被分页为每页包含50个用户-我需要调用同一个调用5次以获取所有用户,如下面的脚本所示。。唯一更改的参数是&page= const [one, two, three, four, five] = await Promise.all([ axios.get(`https://meta.discourse.org/directory_items.json?order=days_visited&page

我有一个基本的异步函数,用于检索使用Axios的用户列表。我正在调用的话语API的响应被分页为每页包含50个用户-我需要调用同一个调用5次以获取所有用户,如下面的脚本所示。。唯一更改的参数是
&page=

const [one, two, three, four, five] = await Promise.all([
    axios.get(`https://meta.discourse.org/directory_items.json?order=days_visited&page=0&period=all`),
    axios.get(`https://meta.discourse.org/directory_items.json?order=days_visited&page=1&period=all`),
    axios.get(`https://meta.discourse.org/directory_items.json?order=days_visited&page=2&period=all`),
    axios.get(`https://meta.discourse.org/directory_items.json?order=days_visited&page=3&period=all`),
    axios.get(`https://meta.discourse.org/directory_items.json?order=days_visited&page=4&period=all`)
  ]);

var users_array = one.data.directory_items.concat(two.data.directory_items, three.data.directory_items, four.data.directory_items, five.data.directory_items)

虽然这样做很有效,但似乎很麻烦,我想知道是否有一种更简洁、更有效的方法可以做到这一点?

您可以按如下方式进行:

// create Array containing all calls
const calls = [...Array(5).keys()].map(x => 
axios.get(`https://meta.discourse.org/directory_items.json?order=days_visited&page=${x}&period=all`)
)

// This will ensure that all api calls happen parallely
const [one, two, three, four, five] = await Promise.all(calls);

var users_array = one.data.directory_items.concat(two.data.directory_items, three.data.directory_items, four.data.directory_items, five.data.directory_items)

如果你这样做,你怎么知道你会得到所有的用户?如果随着时间的推移会有更多,如果会有更少呢?如果你真的想加载所有的数据,你应该运行一个循环,直到你确定你有所有的页面……