关于小程序:小程序首页需要等待appjsonLaunch中某请求执行完成

3次阅读

共计 820 个字符,预计需要花费 3 分钟才能阅读完成。

场景
我的项目启动的时候(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)
    }
},
正文完
 0