userinfo是通过回调获取的,怎么保证在页面加载前一定能得这类信息呢?
发布于 7 年前 作者 ming86 14551 次浏览 来自 问答

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

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

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

4 回复

to 阿聪:

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

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

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

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

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

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

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

回到顶部