收藏
回答

官方请进---微信小程序生命周期管理

现象描述:微信小程序转发时,用户第一次进入小程序,转发页面用户信息处理异常


具体描述:使用wepy开发微信小程序时,在app的onLaunch()中使用async/await处理用户注册功能,比如(用户第一次登陆时,获取openId,在开发者服务器中处理用户信息--创建、更新等操作),app的onLaunch()中的方法还未处理完成,就开始处理转发页面onLoad()\onShow()就开始执行。转发页面onLoad()\onShow()需要用到用户的信息。没有获取到,就出了异常


问题:如何才能使app的onLaunch的处理用户信息的方法执行完成,再进行转发页面的onLoad()\onShow()


最后一次编辑于  2018-10-27  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

4 个回答

  • Jiacheng
    Jiacheng
    2018-10-29

    https://developers.weixin.qq.com/s/glnZpwmI7g3t

    2018-10-29
    赞同 1
    回复
  • 黄豆芽🔫
    黄豆芽🔫
    2018-10-28

    小程序这种多页面,估计很难处理这种并发的问题。

    建议你在请求接口拦截器(使用了flyio之类的都有拦截器)之前校验一下有没有token,如果没有token则去请求登录接口。

    https://wendux.github.io/dist/#/doc/flyio/interceptor 这里有flyio的教程

    2018-10-28
    赞同
    回复
  • PULando
    PULando
    2018-10-30

    通过回调函数可以解决这个问题。

    index.js
    onLoad: function (options) {    
    getApp().initOkCallback = res =>{//向目标填写一个函数
                //相关业务操作
    }
     
    app.js
    onLaunch: function () {
              //相关初始化操作
                     if (that.initOkCallback) {//如果这个方法存在
              this.initOkCallback();执行回调函数
            }
    }


    如果这个index为首页的话,在进入小程序时,onLoad与onLaunch是同时加载的。如果onLaunch中有初始化,并且onLoad中就要马上调用时,一定会出现异常。因此需要onLoad中写入回调对此异步加载进行阻塞,待onLaunch初始化成功一会,回调onLoad相关函数。

    使用延迟器的方式也可以,但是会因为用户网络问题出现不可预估的异常。

    2018-10-30
    赞同
    回复
  • BoomBoom!
    BoomBoom!
    2018-10-30

    增加一个开屏页,在开屏页里请求完成后携带参数跳转指定页面。

    2018-10-30
    赞同
    回复