问题:小程序上传文件后我需要后端返回的一个值,但这个值总是在最后面导致需要这个值的方法总是报错,打印测试后发现这它是异步的。但直接使用 await 来等待也不行。
app.js 页面
/**
*
* @param {*} imgPath 图片
* @param {*} postfi 图片后缀名 注:要后后缀名是因为我限制了图片大小,使用了小程序的图片压缩方法但是压缩后的图片没有后缀名。上传到服务器后就无法展示。
*/
uploadList(imgPath, postfi){
let token = wx.getStorageInfoSync("token");
let url = this.globalData.api+'/oss/file/uploadList';
return new Promise((resolve, reject) =>{
wx.uploadFile({
url: url,
filePath: imgPath,
name: 'file',
formData: {'postfi': postfi},
header: {
'Accept': 'application/json',
'token': token
},
success: res => {
resolve(res.data);
},
fail: err => {
reject(err);
}
})
})
},
/**
* 文件上传-多文件
* @param {List} pathList 文件集合
* @return {list<String>} 文件id的集合
*/
async uploadFileList(pathList){
wx.showLoading({
title: '图片上传中.....',
});
var fileIdList = [];
for (let i = 0; i < pathList.length; i++) {
let fileId = await this.uploadList(pathList[i].url, pathList[i].postfi);
fileIdList.push(fileId);
}
wx.hideLoading();
return fileIdList;
},
这里也需要 将这个方法变成异步的才可使用 await 来等待
调用的 页面
async preserve(){
let fileIdList = await app.uploadFileList(this.data.fileList);
}
版权声明:本文为weixin_49200545原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。