收藏
回答

如何优化多条件判断?

我的业务逻辑需要进行大量的条件判断,根据不同情况展示不同弹窗内容。因为异步,经常先显示某一内容,等异步结束再显示正确内容。

请问以下代码该如何优化

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,以下是不同情显示的弹窗。。。



最后一次编辑于  2021-09-08
回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    2021-09-08

    首页我一般一定会用async/await的。

    加载慢是慢了点,但是逻辑清楚;可以先弹个骨架,等数据齐了再刷新。

    2021-09-08
    有用 1
    回复 2
    • Qiu (吉²)
      Qiu (吉²)
      2021-09-08
      谢谢🙏
      2021-09-08
      回复
    • 老张
      老张
      2021-09-08回复Qiu (吉²)
      补充一下:你这么多fetch,我们有同样情况,用的是await Promise.all()
      2021-09-08
      回复
登录 后发表内容