我的业务逻辑需要进行大量的条件判断,根据不同情况展示不同弹窗内容。因为异步,经常先显示某一内容,等异步结束再显示正确内容。
请问以下代码该如何优化
onLoad: function (options) {
const scene = app.globalData.scene;
const enterScene = [1000, 1001, 1005, 1006, 1023, 1026, 1037, 1038, 1089];
// 注册成功后提示分享,此时未分享过
const isLogin = (options.pathType === 'Login') ? true : false;
// 注册成功后首次分享
const isSignIn = (options.pathType === 'SignIn') ? true : false;
// 单人聊天会话中的小程序消息卡片
const isShareChat = (isSignIn && scene === 1007) ? true : false;
// 新注册成功后分享,并且从群聊会话中的小程序消息卡片打开
const isShareFlock = (isSignIn && scene === 1044 || scene === 1008) ? true : false;
const isShare = (options.pathType === 'Share') ? true : false;
const otherEnter = enterScene.includes(scene);
const isGroupTools = (scene === 1158) ? true : false;
const isAuthorize = app.globalData.isUserAuthorize;
this.setData({
isLogin: isLogin,
isSignIn: isSignIn,
isAuthorize: isAuthorize,
groupId: options.groupId,
pathType: (options.pathType) ? options.pathType : '',
scene: scene,
isShareChat: isShareChat,
isShareFlock: isShareFlock,
isShare: isShare,
otherEnter: otherEnter,
isGroupTools: isGroupTools
});
this._fetchGroupInfo();
this._fetchLottery();
this._fetchClockInRecord();
this._fetchLuckers();
this._fetchFlashSale();
this._fetchLinkShop();
this._fetchWantTo();
this._fetchAdviser();
this._fetchFlockBroadcast();
this._fetchURLLink();
this._fetchMyOrder();
},
_fetchopenGIds: function (openGIds) {
wx.cloud.callFunction({
name: 'groupMgt',
data: {
$url: 'InquireOpenGIds',
openGId: openGIds
}
}).then(res => {
let total = res.result.data;
let isExist = (total > 0) ? true : false;
let isEqual = (this.data.openGId === openGIds) ? true : false;
this.setData({
isExist: isExist,
isEqual: isEqual,
});
/** 走到这部时说明是新注册的,如果通过_fetchShareInfo获取到到openGid(isExist)存在,则说明分享的是老群。 */
!isExist && this.data.isAdmin && this.updataOpenGIds(openGIds);
!isExist && !this.data.isFollow && this.updataMyGroup(openGIds);
isExist && isEqual && !this.data.isFollow && this.updataMyGroup(openGIds);
console.log("isExist------", isExist)
console.log("isEqual------", isEqual)
}).catch(err => {
console.log(err)
})
},
wxml,以下是不同情显示的弹窗。。。
首页我一般一定会用async/await的。
加载慢是慢了点,但是逻辑清楚;可以先弹个骨架,等数据齐了再刷新。