我有4个链接,每个链接包含一个不同的JSON对象。我想获取所有内容,然后将它们全部放入空数组中。 我想到了这个(我省略了async / await):
let arr = [];
let iter = 0;
const FIXED_QUANTITY = 4;
while(iter < FIXED_QUANTITY) {
const res = axios.get(`/data/${iter}.json`);
arr = [...arr, res.data.body];
iter++;
}
我的问题是-是否可以使此代码更加优雅(也许使用更高阶的函数)?
答案 0 :(得分:1)
您可以尝试这样的事情吗?
const urls = [];
const FIXED_QUANTITY = 4;
const iter = 4;
while (iter < FIXED_QUANTITY) {
urls.push(`/data/${iter}.json`);
}
const arr = await Promise.all([...urls.map(url => axios.get(url))]).map(
res => res.data.body
);
答案 1 :(得分:0)
您可以按以下方式使用函数Array.from
:
let arr = Array.from({length: FIXED_QUANTITY}, async (_, iter) => (await axios.get(`/data/${iter}.json`)).data.body);
此方法生成具有以下结构的数组:
[{}, {}, ..., {}]