共计 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)
}
},
正文完