一、需求:
前端实现多文件上传,统一提交上传后服务器返回来的数据,最后一个文件上传完成后立即提交保存,不能间隔时间。
二、思路分析:
2.1、点击上传-->调用file方法-->调用upload方法,我们定义两个变量flagA和flagB,分别记录两个方法执行的次数,每次执行+=1,file先执行,upload后执行,所以upload方法结束后我们我们比较flagA和flagB的值,如果flagA大于flagB说明还有文件要上传,如果flagA等于flagB说明已经是最后一个文件了。这个时机就是我们调用保存的时机。
2.2、以上传三个文件为例:
file | upload | 对比flag | 结果 | |
文件1 | flagA+=1 | flagB+=1 | flagA > flagB | 没有上传完成 |
文件2 | flagA+=1 | flagA+=1 | flagA > flagB | 没有上传完成 |
文件3 | flagA+=1 | flagA+=1 | flagA = flagB | 上传完成,执行方法 |
三、代码:
3.1、定义flag:
flagA: 0, // 记录file
flagB: 0, // 记录upload
3.2、记录file:
toRequestFile(data) {
this.flagA += 1
this.toRequest(data, 'file');
},
3.3、记录upload:
toRequest(data, type) {
const fd = new FormData();
fd.append('file', data.file);
commonUpload(fd).then(res=>{
this.$message({ type: 'success', message: '上传成功' });
}).finally(()=>{
this.flagB += 1 // 记录upload
console.log('914flagA-flagB', this.flagA, this.flagB)
})
},
3.4、效果:
上传三个文件,三次次upload执行完成打印3,3,说明三个文件都执行完成。
四、欢迎交流指正,关注我,一起学习。