记录背景:在项目的开发中,一些需要往数据库里添加的数据是通过循环数组得到的;因此要在循环中进行post请求。但是,由于post是异步的,放在循环中会不按顺序执行。
结合promise实现
1.在循环中把请求的方法以new Promise的形式push到数组中
let post = []
xxx.forEach(item=>{
post.push(new Promise((resolve,reject)=>{
axios({
url:xxx,
method:'post',
data:{
name:item.name,
id:item.id
}
}).then(res=>{
resolve(res)
}).catch(err=>{
reject(err)
})
}))
})
2.在循环外用promise.all等待post数组中的所有都执行完毕
Promise.all(post).then(res=>{
console.log(res,"所有post请求执行完毕!")
})