收藏
回答

userinfo是通过回调获取的,怎么保证在页面加载前一定能得这类信息呢?

问题模块
API和组件

如userinfo,以及我自己通过userinfo获取其他信息(通过wx.request),这些信息真正获取到(可以setdata到变量中)是在对应的回调函数执行的时候,例如我在app.js的onLaunch中调用

而我在首页展示的时候,就需要马上使用这些信息(用这些信息作为参数发起一次新的wx.request调用),而这个时候,往往回调还没有完成,这个时候我调用wx.request传入这些参数的时候,就会报null错误

有没有什么方法,可以让程序阻塞着,等我在app.js的onLaunch中所有回调执行完成后,再继续向下执行,然后再加载首页?

最后一次编辑于  2017-05-21
回答关注问题邀请回答
收藏

4 个回答

  • 卓夫
    卓夫
    2017-05-22

    @相见13991282238  加入我有a、b两个回调接口中会返回我要的东西,然后用这2个东西再去调用wx.request,目前问题的关键是这个wx.request的调用时机不好设置,如果写个循环在那里sleep,轮询两个回调是否结束,cpu又会过高,可能被微信kill掉

    2017-05-22
    赞同
    回复
  • 相见
    相见
    2017-05-22

    整个页面用一个wx:if来判断显示,request成功后在将变量设为true(自己用的土方法:))

    2017-05-22
    赞同
    回复
  • 卓夫
    卓夫
    2017-05-22

    to 阿聪:

    我不想把登录作为每次都必须的操作,所以我并不是每次都调用userinfo;

    另外,我的首页展示,需要有另一次wx.request的结果,这个结果是回调得到的,回调结束的事件不确定

    我目前的场景需要阻塞等到这两个回调都完成,然后再开始显示主页,比较合适

    但这两个回调,不是串连的(wx.request的回调不一定在getuserinfo的回调中调用,而是在外部调用)

    2017-05-22
    赞同
    回复
  • 阿聪
    阿聪
    2017-05-22

    wx.getUserInfo({ //获取用户信息
              success: function (res) {
                //这边开始你的首页展示
              }

    2017-05-22
    赞同
    回复