微信小程序代码执行顺序问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序代码执行顺序问题相关的知识,希望对你有一定的参考价值。

var serverImg=[]
for (var i = 0; i < imglist.length; i++)
wx.uploadFile(
url: config.serverUrl('index.php/user/uploadtu'), filePath: imglist[i],name: 'file', success: function (res) serverImg.push(res.data);console.log(serverImg)
,
fail:function(e)
Util.mes("图片上传失败,请重新发布!")

)

var serverImgStr=serverImg.join("|")
现在问题是,程序先执行var serverImgStr=serverImg.join("|"),
然后才上去执行for循环里面的代码,造成serverImgStr空值。。

你代码的执行顺序有问题吧?看不到完整代码,帮不到你。追问

这个就算是完整代码了,现在程序问题就是for循环里面的代码还没执行完,就执行var serverImgStr=serverImg.join("|")这行代码了,造成serverImg空值,serverImg的值是要等for里面的代码执行完了,才有值

追答

这个肯定不行,因为你在for循环里用了异步请求来获取数据,而for循环的执行速度比里面的异步请求快太多,每一次循环时根本来不及获取到res.data数据就已经进入下一次循环了,所以serverImg这个数组在for循环结束后还是空值,导致了后续的报错。
你可以创建一个循环定时器,隔一定时长(例如几十毫秒)就检测serverImg这个数组的长度是否等于imglist的长度,直到两者相等,再清除定时器,执行下面的join方法。

参考技术A 把var变量改为let变量试试

以上是关于微信小程序代码执行顺序问题的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序data数据获取问题

微信小程序多张图片上传阿里云时如何做到顺序上传

微信小程序获取openid异步问题 有时候获取不到问题

微信小程序重写onLoad函数,让每个页面在运行的时候都可以执行某个代码

微信小程序接受不到POST的值

微信小程序如何延时?定时?后执行一段代码?(坑记)