当前位置: 首页 > 工具软件 > App.js > 使用案例 >

微信小程序app.js加载慢导致home.js无法获取到userId的解决办法

向子安
2023-12-01

也是第一次发现,在home.js初始化时需要根据用户个人信息去调用一个接口,才发现加载顺序有问题,先加载了home.js,再加载的app.js,导致我的App.globalData.userinfo一直为null。

解决其实办法挺多的,分类大致这3种方式
1在app.js使用回调函数,home里判断是否已经获取到用户id,没有获取到就不停的获取,直到获取后再执行自己的方法。

2使用定时器,在home.js里一直执行,直道userinfo不为null即可。

3可以把home中需要的方法挪到app.js里面去执行

我只贴使用定时器的解决办法

home.js

定义定时器

 data: {
    setInter: '', 
  },

页面初始化加载定时器

onLoad: function (options) {
    this.startSetInter()
}

// 定时器中每隔1秒调用自定义方法

startSetInter: function () {
    var that = this;
    //将计时器赋值给setInter
    that.data.setInter = setInterval(
      function () {
        that.queryRemindCount()
      }, 1000);
  },

自定义方法

/**
 * 获取消息总条数
 */
  queryRemindCount: function () {
    if (App.globalData.userInfo == null) {
      return
    }
    var that = this;
      wx.request({
        url: App.globalData.projectPath + '/remind/remindsetupuser/wechat/queryRemindCount',
        type: "POST",
        data: {
          userId: App.globalData.userInfo.id
        },
        header: {
          'content-type': 'application/json'
        },
        success: function (sres) {
          that.setData({
            remindCount: sres.data.data
          })
          clearInterval(that.data.setInter) // 关闭定时器
        }
      })
  },
 类似资料: