• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

微信小程序app.js内容加载速度比index.js慢导致无法获取到全局用户对象 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我在app.js 的onload 进行wx.login 取到code,用code 去调用api服务器换取openid并且获取用户信息回来缓存到  globalData.userinfo 缓存起来

在首页的index.js 的onload  获取 getApp().globalData.userinfo 进行逻辑处理,发现是空的,但过一会就有了。

二、原因

app.js的onload的wx.request是异步,所以在index.js加载的时候它还没获取到数据,过一会就有了

三、解决方案

1、在app.js wx.request的success进行处理index.js的逻辑(或回调函数进行处理逻辑)

2、用promise,在app.js onload 返回promise,index.js进行then处理。

3、使用定时器,在index.js里一直执行,直到userinfo不为null

 

这边采用第三种

在index.js 的写上

onHide:function(){
//记得在这边关闭页面或者跳转页面写入关闭计时器
clearInterval(this.data.setInter)

},
onUnload:function(){
//记得在这边页面卸载
clearInterval(this.data.setInter)

},


onload:function(){
this.getUserInfo
},
getUserInfo: function() { var t = this; if(t.data.baseinfo) { console.log('早有了'); return ; } t.data.setInter = setInterval( function () { t.queryUserInfo() }, 1000); },
queryUserInfo: function () {
        var t = this;
        if (app.globalData.userInfo == null) {
            console.log('无')
          return
        }
        console.log('有')
        var userinfo=app.globalData.userInfo;      
          t.setData({
              baseinfo: basemin
          })
          clearInterval(t.data.setInter) //记得关掉计时器
    },

  

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序textarea层级过高的解决方式发布时间:2022-07-18
下一篇:
微信小程序登陆授权发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap