使用 vue 開發時,遇到同步請求的問題,我需要遍歷執行一個上傳圖片的操作,待圖片全部上傳完畢再執行資料提交,代碼邏輯大概如下
methods: {
submit () {
this.uploadImg()
// 需等待圖片完成后再執行以下操作
......
},
uploadImg () {
this.imgArray.forEach(item => {
doUpload(item) // 執行上傳,這是一個網路的異步請求
})
}
}
我試著使用以下方式進行同步
methods: {
submit () {
this.uploadImg()
// 需等待圖片完成后再執行以下操作
......
},
async uploadImg () {
await this.imgArray.forEach(item => {
doUpload(item) // 執行上傳,這是一個網路的異步請求
})
}
}
methods: {
async submit () {
await this.uploadImg()
// 需等待圖片完成后再執行以下操作
......
},
uploadImg () {
return new Promise((resolve, reject) => {
this.imgArray.forEach(item => {
doUpload(item) // 執行上傳,這是一個網路的異步請求
})
resolve()
})
}
}
都不能達到同步效果,圖片上傳和其他的操作異步執行了,請問各位前端大佬這種需求該怎么做
uj5u.com熱心網友回復:
你把其他操作放在上傳網路請求的回傳結果里面執行不就好了uj5u.com熱心網友回復:
定義一個變數 上傳后更改變數的值 監聽該變數 做其他操作uj5u.com熱心網友回復:
methods: {
async submit () {
await this.uploadImg()
// 需等待圖片完成后再執行以下操作
......
},
uploadImg () {
const arr = []
this.imgArray.forEach(async (item) => {
arr.push(doUpload(item)) // 執行上傳,這是一個網路的異步請求
})
return Promise.all(arr)
}
}
// 試試這樣
uj5u.com熱心網友回復:
第10行不用 async轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/232338.html
標籤:JavaScript
上一篇:vue+tradingview
下一篇:請教apache的問題
