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


发现这个问题后查了很久,输入相关问题,都是关于this指针应该提前备份成that的回答,但在这里是没有这个问题的。其实,把1、2都输出,还有一个奇怪的是为什么2在1前显示?
原因
最后,个人觉得之所以2处的调试信息先显示是因为,在onLoad方法中,2前有一大坨从后台取数据的操作(封装在getTitleList方法里),代码在执行时,这部分执行需要一定时间,在这段时间里,继续执行后面的2处,等到数据返回后。所以把要用到该变量的代码提前到1处。
之后查了查js代码的执行顺序,证明猜测是正确的,可以点击链接详细了解一下~
本文探讨了一个关于setData函数的奇怪现象,在小程序开发中,setData后立即读取数据发现为空的问题。通过深入分析,揭示了JS代码执行顺序与setData异步特性的关系,提供了解决方案。
2216

被折叠的 条评论
为什么被折叠?



