小程序-首页需要等待app.js—onLaunch中某请求执行完成

Posted 我在神游

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序-首页需要等待app.js—onLaunch中某请求执行完成相关的知识,希望对你有一定的参考价值。

场景:
项目启动的时候(onLaunch)就向后端请求接口返回租户ID,在首页(onLoad)中由于异步请求在这里并没有拿到租户ID

(备注:在onReady事件中偶尔可以拿到租户ID,这是因为onLaunch里的接口请求快的原因,写在onReady里并不能解决问题)

是因为异步请求,还没拿到结果,onLoad就执行了。小程序并没有让app.js里onLaunch的方法执行完再去执行页面中的方法

解决办法
在onLaunch的接口中添加请求回调

appjs中添加wxConfigCallback回调

onLaunch: function () {
    this.getWxConfig(); //获取小程序配置信息
  },
  
//获取小程序配置信息
getWxConfig: function () {
    api.getWxConfig({
      appId:this.appId || wx.getStorageSync("appId")
    }).then((res) => {
      let config = res.data;
      //存储配置项
      this.tenantId = config.tenantId;
      this.msgTmplIds = config.msgTmplIds;
      wx.setStorageSync("msgTmplIds", this.msgTmplIds); 
      wx.setStorageSync("tenantId", config.tenantId);

      //是否有回调,以防home页的onLoad拿不到异步数据
      if (this.wxConfigCallback) {
        this.wxConfigCallback(config)
      }

    });
},

home中使用回调后执行业务逻辑

onLoad: function (options) {
    //拿到app.js配置参数后执行
    app.wxConfigCallback = (config) => {
        //执行业务逻辑...
        consloe.log(config)
        pageRecord(9)
    }
},

以上是关于小程序-首页需要等待app.js—onLaunch中某请求执行完成的主要内容,如果未能解决你的问题,请参考以下文章

小程序

微信小程序——小程序的能力

微信小程序首页index.js获取不到app.js中动态设置的globalData的原因以及解决方法

微信小程序是怎么运行的?

微信小程序APP生命周期

微信小程序中app.js文件组件api