我将如何在for循环中运行Axios,每个循环都具有相应的.then()
函数。然后在for循环结束后,运行另一个函数。
示例:
const array = ['asdf', 'foo', 'bar'];
let users = [];
for (i = 0; i < array.length; i++) {
axios.get('/user/' + array[i].id).then(response => {
// do something with response
users.push(response);
});
}
console.log(users);
答案 0 :(得分:1)
dialAlert
Promise的const array = ['asdf', 'foo', 'bar'];
let users = [];
let promises = [];
for (i = 0; i < array.length; i++) {
promises.push(
axios.get('/user/' + array[i].id).then(response => {
// do something with response
users.push(response);
})
)
}
Promise.all(promises).then(() => console.log(users));
方法本身会返回Promise;这样您就可以收集这些信息并通过.then()
等待它们。
请注意,即使您是在Promise.all()
函数中执行此操作,也不想在循环中async
,因为那样每个请求都会等待上一个请求完成在它开始之前,大概您想并行运行这些请求。
根据您的用例,简洁的async / await函数可能如下所示:
await
答案 1 :(得分:0)
您应将所有promise收集在数组中,并以以下方式使用promise.all-
const array = ['asdf', 'foo', 'bar'];
let promises = [];
for (i = 0; i < array.length; i++) {
promises.push(axios.get('/user/' + array[i].id))
}
Promise.all(promises)
.then(responses => console.log(responses));
答案 2 :(得分:0)
如果您使用支持async/await
的较新版本的javascript,则可以执行以下操作:
const array = ['asdf', 'foo', 'bar'];
let users = [];
for (const id in array) {
const response = await axios('/user/' + id);
users.push(response);
}
console.log(users);