javascript - axios 响应格式对象 vs 数组
问题描述
我正在使用 axios/vue 来获取一些数据,目前其中一些调用是手动设置的。我需要自动化所有这些,我几乎成功了,但我得到的数据不正确。
这是我当前的“手动”设置:
let linksArr = ['abc.json','def.json'];
axios
.all(linksArr.map(l => axios.get(l)))
.then(
axios.spread(function(abc, def) {
var merged = [...abc.data, ...def.data]
})
)
我在这个设置中得到了这样的回应:
(2) [{…}, {…}]
0: {}
1: {}
但是当我将它更改为像这样更“自动”的东西时(linkArr 是动态的并且可能很长):
let linksArr = ['abc.json','def.json'];
axios
.all(linksArr.map(l => axios.get(l)))
.then(
responses => {
var merged = [].concat(responses.map(res => res.data));
}
);
我得到这个作为回应(注意 [{}]):
(2) [Array(1), Array(1)]
0: [{…}]
1: [{…}]
我想为响应(对象与数组)保持相同的格式,但我不知道该怎么做......
谢谢。
解决方案
在后一个示例中,您的回调有误。您在原始代码中所做的是连接传播项目 ( ...ARG.data
),而在后一个代码中,您缺少这部分。请检查以下工作示例:
let linksArr = ['abc.json','def.json'];
axios
.all(linksArr.map(l => axios.get(l)))
.then(responses => {
const merged = responses
.map(r => r.data)
.reduce((acc, item) => [...acc, ...item], []);
});
推荐阅读
- tensorflow - InvalidArgumentError:缩减轴 0 在形状 [0] 中为空
- python - Twitch api 访问令牌问题
- node.js - 无法安装 vue-cli,找不到匹配的版本
- javascript - 如何使用异步函数作为 jest.mock 的第二个参数?
- javascript - 在使用 Js 的 Click 事件之后,从 forEach 循环中获取特定值
- mysql - 字符串、字符串(255)还是 VARCHAR(255)?
- c++ - 哪些 OpenSSL 可以加密这样的字符串?
- javascript - 尝试使用 JavaScript 从 azure 获取访问令牌时无法加载响应数据
- android - 如何为颤振应用程序获取音频流中的元数据
- javascript - 手风琴:关闭除单击的行之外的所有行