微信小程序 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[i],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人字以上哦,还有<a href="/tag/tupian/" target="_blank" class="keywords">图片</a>也要选哦!")
}
}
})
}else
{
//这里直接递归
i++;
that.uploadImg();
}
},fail: function (e) {
console.log(e)
Util.mes("<a href="/tag/tupian/" target="_blank" class="keywords">图片</a><a href="/tag/shangchuan/" target="_blank" class="keywords">上传</a>失败,请重新发布!" + i)
}
})
},
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!