wx.uploadFile在安卓机the same task is working
微信小程序上传图片的时候,如果是多图片上传,一般都是直接用一个循环进行wx.uploadFile
这个在电脑上面测试与苹果手机上面都不会有什么问题
但当用安卓测试的时候,你会发现小程序会提示一个the same task is working
wx.uploadFile不能并行,因为wx.uploadFile是一个异步函数,所以循环的时候在安卓手机上会出现并行
解决方法:
做一个上传完的标识,然后
用递归算法进行上传
在上传成功的回调函数里面,直接递归,标识满足直接跳出,完成所有图片上传
贴上个代码段
-
//上传标识
-
-
var i=0
-
-
//imglist为要上传图片的路径数组
-
-
uploadImg: function () {
-
-
var that = this
-
-
if (i == imglist.length) {
-
-
//清空还原
-
-
news = ""
-
-
city = ""
-
-
i=0
-
-
wait = true
-
-
imglist = []
-
-
serverImg = []
-
-
retrunList = []
-
-
that.setData({
-
-
loding: false,
-
-
src: [],
-
-
disabled: false
-
-
})
-
-
return;
-
-
}
-
-
var imgcount = imglist.length;
-
-
wx.uploadFile({
-
-
url: config.serverUrl('index.php/user/uploadtu'),
-
-
filePath: imglist,
-
-
name: 'file',
-
-
formData: { 'user': 'test' },
-
-
success: function (res) {
-
-
serverImg.push(res.data)
-
-
if (imgcount == serverImg.length) {
-
-
var serverImgStr = serverImg.join("|")
-
-
wx.request({
-
-
url: config.serverUrl('index.php/user/baobeiadd'),
-
-
method: 'POST',
-
-
data: Util.json2Form({
-
-
imglist: serverImgStr,
-
-
userId: userId,
-
-
news: news,
-
-
city: city,
-
-
latitude: latitude,
-
-
longitude: longitude
-
-
}),
-
-
header: {
-
-
'content-type': 'application/x-www-form-urlencoded'
-
-
},
-
-
success: function (res2) {
-
-
if (res2.data.state == "ok") {
-
-
-
-
that.setData({
-
-
loding: false,
-
-
butTxt: "发布",
-
-
disabled: false
-
-
})
-
-
-
-
Util.mesUrl("发布成功!", "../index/index")
-
-
}
-
-
else {
-
-
Util.mes("描述至少10人字以上哦,还有图片也要选哦!")
-
-
}
-
-
}
-
-
})
-
-
}else
-
-
{
-
-
//这里直接递归
-
-
i++;
-
-
that.uploadImg();
-
-
}
-
-
},
-
-
fail: function (e) {
-
-
console.log(e)
-
-
Util.mes("图片上传失败,请重新发布!" + i)
-
-
}
-
-
})
-
-
-
-
},
|