当小程序使用编译模式调试某个页面时。在onready里面获取全局变量会有延迟的情况,(这是我遇到的问题,不知道你们会不会),使用定时器的时候可以清楚的看到多少秒后,这些数据就可以拿到
解决方法
userInfoReadyCallback 需要再onload里面使用
获取用户信息的网络请求,由于其返回结果不知道在index页面加载完成之前还是之后完成,因此分为两种情况:
1.在index页面加载完成之前返回:这时会优先执行app.js
中success
函数的代码,app.globalData.userInfo.openid_mini
就会有值。运行到这里时,由于userInfoReadyCallback
函数是在index.onload中
定义的,因此此时该函数并没有被定义,所以不执行该函数。之后执行index.js
中onload中
的代码,执行第一个if分支,赋值给页面的userInfo
和isShowlogin
和isbindOpenid
。
2.在index页面加载完成之后返回,这时就会延迟:这时会优先执行index.js
中onload
函数的代码,由于用户信息还没有返回,app.globalData.userInfo.openid_mini
为undefined,执行第二个else分支,定义userInfoReadyCallback
函数和isloginCallback
函数返回数据,赋值给isShowlogin
和isbindOpenid
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that = this;
if (app.globalData.userInfo.openid_mini) {
//当可以获取到openid时
that.setData({
isShowlogin