Axios在foreach内部存储相同的信息时,会发生数据覆盖的问题,可以使用闭包来解决此问题。闭包是一种可以访问其周围内部函数作用域的函数。此外,还可以使用Promise.all()来解决这个问题。
代码示例:
使用闭包解决问题:
axios.get('https://jsonplaceholder.typicode.com/users') .then((response) => { const data = response.data; const array = []; for (let i = 0; i < data.length; i++) { array.push(function() { const user = data[i]; console.log(user.name); }); } array.forEach(function(item) { item(); }); }) .catch((error) => { console.log(error); });
使用Promise.all()解决问题:
let array = [];
axios.get('https://jsonplaceholder.typicode.com/users')
.then((response) => {
const data = response.data;
for (let i = 0; i < data.length; i++) {
array.push(axios.get(https://jsonplaceholder.typicode.com/posts?userId=${data[i].id}
));
}
Promise.all(array).then((results) => {
results.forEach((result) => {
console.log(result.data);
});
})
})
.catch((error) => {
console.log(error);
});