技术不行但人小帅 2023-03-10 10:59 采纳率: 59.7%
浏览 36
已结题

uniapp前端异步的一些小问题

以下代码如何解决异步获取数据的问题? 不影响功能,但是会报错,看着不是很舒服。

img

methods:{






//页面初始数据
getInfors() {
            let that = this;
            var hc = wx.getStorageSync('loginStorage');
            let dataInfo = hc;
            wx.cloud.callFunction({
                name: 'roomInfo',
                data: {
                    userName: dataInfo.userName,
                    homeLocation: that.homeInfo.homeLocation,
                    homeName: that.homeInfo.homeName
                },
                success: res => {
                    //接口是异步数据
                    that.allRoom = res.result.data;
                    that.allRooms = that.allRoom;
                    that.isLoading = false;
                    //排序


                                                 //报错在这里  报错sort未定义,  但是不影响功能使用, 就是在调用时 异步的数据还未传递,
                    that.allRooms = that.sortByFloorAndState(that.allRooms);
                
                },
                fail: res => {}
            });
        },

}



//排序
sortByFloorAndState(arr) {
      return arr.sort((a, b) => {
        const stateOrder = { 已入住: 1, 空置: 0 };
        const typeA = a.floorType.toLowerCase();
        const typeB = b.floorType.toLowerCase();
        return (
          stateOrder[a.homeState] - stateOrder[b.homeState] ||
          typeA.length - typeB.length ||
          typeA.localeCompare(typeB, 'zh-Hans-CN', { sensitivity: 'accent' }) ||
          a.floorNums - b.floorNums ||
          a.roomNums - b.roomNums
        );
      })
      .reduce(
        (acc, cur) => {
          cur.homeState === '已入住' ? acc.bookedRooms.push(cur) : acc.emptyRooms.push(cur);
          return acc;
        },
        { bookedRooms: [], emptyRooms: [] }
      )
      .bookedRooms.concat(
        [
          ...new Set(
            this.sortByFloorAndState.emptyRooms.sort((a, b) => a.floorNums - b.floorNums || a.roomNums - b.roomNums).map(room => JSON.stringify(room))
          )
        ].map(room => JSON.parse(room))
      );
    },

onload(){
 this.getInfors()
}
  • 写回答

1条回答 默认 最新

  • 崽崽的谷雨 2023-03-10 11:07
    关注

    sortByFloorAndState 这个方法里 return arr.sort 这里用到了 。 报错是说 无法读取未定义的属性sort 。 说明 arr 不是一个数组类型 或者是这个

     .bookedRooms.concat(
                [
                  ...new Set(
                    this.sortByFloorAndState.emptyRooms.sort((a, b) => a.floorNums - b.floorNums || a.roomNums - b.roomNums).map(room => JSON.stringify(room))
                  )
                ].map(room => JSON.parse(room))
    
    

    这里也用到 sort了 emptyRooms 可能也不是数组 ,你打印一下看看 。你可以做个 判断是数组类型再调用 sort

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月12日
  • 已采纳回答 3月10日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢