记录一下vue中的异步循环
刚开始是在使用文件上传的时候,多个文件上传进度进行显示,然后在多文件上传的时候发现,会一次性进行全部上传,查了一下发现是因为js是单线程的,所以会有这个问题
于是开始寻找异步循环的方法,代码如下
async submitCreateImgUrl(){//批量上传this.submitLoading = truefor(let i =0;i<this.fileList.length;i++){await this.doUploadFiles(this.fileList[i],'create')}this.checkUpload()},
doUploadFiles(item,type){return new Promise((resolve, reject) => {// 转换成接口需要的格式const formData = new FormData()formData.append("files", item.raw)handleUploadFile({FileType:1,RelatedId: this.userId,FileName:item.raw.name,formData:formData}).then(res=>{console.log(res)resolve()}).catch(err=>{console.log(err)reject()})})},
这个功能是需要等多文件全部上传完成后再进行判断是否上传成功,这里使用了promise进行异步 ,结果顺利达到了目的
但是在另一个uniapp项目中,这个方式似乎并没有生效,就用到另外一种方法
async loopAsync() {
for (let i = 0; i < 5; i++) {
const result = await this.asyncFunction(i + 1);
console.log(result);
}
},
asyncFunction(index) {
return new Promise((resolve, reject) => {
// 模拟异步操作
setTimeout(() => {
resolve(`第${index}次异步操作完成!`)
}, index * 500);
});
}
},
参考https://www.cnblogs.com/vickylinj/p/16647850.html
https://www.cnblogs.com/liangtao999/p/13089966.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律