微信小程序setData无效的坑(除了this指针的原因)

时间:2024-04-05 11:07:38

问题

今天遇到了一个奇怪的问题,setData后,调试信息显示赋值的变量未空。

问题如下:在js中两次console.log(that.data.titleList),控制台显示两次的返回信息,注意返回信息的顺序(经过单次输出检查的确如此,这里没有搞混),很奇怪,为什么1已经赋值成功了,在后面的2处却显示为空?这也导致本来想在2处调用WxSearch.initMindKeys(that.data.titleList);显示无效

微信小程序setData无效的坑(除了this指针的原因)

微信小程序setData无效的坑(除了this指针的原因)

发现这个问题后查了很久,输入相关问题,都是关于this指针应该提前备份成that的回答,但在这里是没有这个问题的。其实,把1、2都输出,还有一个奇怪的是为什么2在1前显示?

原因

最后,个人觉得之所以2处的调试信息先显示是因为,在onLoad方法中,2前有一大坨从后台取数据的操作(封装在getTitleList方法里),代码在执行时,这部分执行需要一定时间,在这段时间里,继续执行后面的2处,等到数据返回后。所以把要用到该变量的代码提前到1处。

之后查了查js代码的执行顺序,证明猜测是正确的,可以点击链接详细了解一下~