Promise.all()在实际项目中的使用
案例一
1、功能点描述
多个表单同时校验
2、关键代码片段
let formArr = ['uForm1','uForm2','uForm3'];
formArr.forEach(item => {
let result = new Promise(async function(resolve) {
const res = await _self.$refs[item].validate();
return resolve(res);
});
resultArr.push(result);
})
Promise.all(resultArr).then(values => {
this.submitForm(); // 此时必填完成,做保存后的业务操作
}).catch( err => {
console.log('err', err);
});
案例二
1、功能点描述
在每个数据中增加图片字段,该图片需要从后端去请求
2、关键代码片段
/* 定义一个空的数组 */
let picSrcArr = [];
/* 循环遍历数组,在每个数组中添加一个logo属性,此属性需要根据数组的每一项向后端请求数据,随即给每项进行赋值 */
res.data.forEach((item) => {
let promiseItem = new Promise(async resolve => {
let params = {
storeName: item.logo
};
const res = await api.handleFile.fileDownload({ params });
return resolve(res);
});
picSrcArr.push(promiseItem);
});
Promise.all(picSrcArr).then(result => {
result.forEach((item, index) => {
res.data[index].logo = window.URL.createObjectURL(item);
res.data[index]['enabled'] = true;
});
myAppList.value = res.data || [];
});