场景:
项目启动的时候(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)
}
},
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。