同步请求的问题

tandy 2020-12-09 12:27:25
使用 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()
})
}
}

都不能达到同步效果,图片上传和其他的操作异步执行了,请问各位前端大佬这种需求该怎么做
...全文
351 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_50944805 2020-12-09
  • 打赏
  • 举报
回复
第10行不用 async
weixin_50944805 2020-12-09
  • 打赏
  • 举报
回复



methods: {
    async submit () {
        await this.uploadImg()
        // 需等待图片完成后再执行以下操作
        ......
    },

    uploadImg () {
        const arr = []
        this.imgArray.forEach(async (item) => {
            arr.push(doUpload(item)) // 执行上传,这是一个网络的异步请求
        })
        return Promise.all(arr)
    }
}

// 试试这样


chenrynet 2020-12-09
  • 打赏
  • 举报
回复
定义一个变量 上传后更改变量的值 监听该变量 做其他操作
sha虫剂 2020-12-09
  • 打赏
  • 举报
回复
你把其他操作放在上传网络请求的返回结果里面执行不就好了

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧