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

时间:2019-12-09 18:57:05

标签: javascript axios concat

我有一个基本的异步功能,该功能使用Axios检索用户列表。我正在调用的Discourse API的响应被分页为每页包含50个用户-我需要调用相同的调用5次才能获得所有用户,如下面的脚本所示。.唯一更改的参数是{{1} }

&page=

虽然可行,但看起来很麻烦,我想知道是否有更简洁有效的方法?

2 个答案:

答案 0 :(得分:0)

这是一个开始:

for(var i = 0; i < 100; i++){
const [response] = await Promise.all([
    axios.get(`https://meta.discourse.org/directory_items.json?order=days_visited&page=${i}&period=all`)])

答案 1 :(得分:0)

您可以按照以下方式进行操作:

// 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)