uploadImage: function ({ files = [], name = 'file', formData = {}, header = {}, dir = '',url=config.uploadImageUrl}){
return new es6.Promise((resolve,reject)=>{
if (files && files instanceof Array && files.length>0){
var promiseList=[];
for (var i = 0; i < files.length;i++){
promiseList[i] = new es6.Promise((resolve, reject) => {
wx.uploadFile({
url: url + dir, //仅为示例,非真实的接口地址
filePath: files[i],
name: name,
formData: formData,
header: header,
success: function (res) {
resolve(res.data);
},
fail: function (error) {
reject(error);
}
})
});
}
es6.Promise.all(promiseList)
.then(function (result){
resolve(result);
})
.then(function(error){
reject(error);
})
}else{
reject('传参有误,请传数组格式');
}
})
}
选一个文件上传没有问题,选2个以上就报:
WAService.js:3 uploadFile:fail createUploadTask:fail exceed max upload connection count 1
百度了下Promise.all()的结果是按顺序输出的,但是执行是并行,问题应该在这。
无耐只好控制Promise.all()的执行顺序,执行完第一个再执行第二个。
请问Promise.all()怎么改执行顺序呢?
要链式执行可以用 reduce 把 promise 串起来。
Promise 太麻烦了,有了 async /await 就好多了
用 async/await 写一下题主的例子: