vue 中在for循环里使用axios传数据,现在是上一条axios没有结束,下一条就又来了,如何改造,能让axios结束后再进入下一次循环,或者是axios实现同步传输
insertRepository() {
for (let i = 0; i < this.datasource.length; i++) {
axios({
url: 'url',
data: {
datasource: this.datasource[i]
},
method: 'post',
}).then((res) => {
})
}
},
改为递归
可以改造一下
async insertRepository() {
for (let i = 0; i < this.datasource.length; i++) {
try {
const res = await axios.post('url', {
datasource: this.datasource[i]
});
// 处理 res
} catch (error) {
// 处理异常
}
}
}
首先将 insertRepository() 方法声明为 async,然后在 for 循环中使用 await 关键字来等待上一条 axios 请求结束后再执行下一条请求。这样就能够实现同步传输的效果,确保每次请求都在上一次请求结束后再进行。
需要注意的是,使用 async/await 的方式需要将 axios 请求包装在 try/catch 语句中,以便于捕获请求过程中可能出现的异常。同时,我们还可以在 try 中处理返回的结果 res,在 catch 中处理异常 error。