技术不行但人小帅 2023-03-10 10:59 采纳率: 59.2%
浏览 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 cpuid是如何转换的
  • ¥15 MddBootstrapInitialize2失败
  • ¥15 LCD Flicker
  • ¥15 Spring MVC项目,访问不到相应的控制器方法
  • ¥15 esp32在micropython环境下使用ssl/tls连接mqtt服务器出现以下报错Connected on 192.168.154.223发生意外错误: 5无法连接到 MQTT 代理,如何解决?
  • ¥15 关于#genesiscsheel#的问题,如何解决?
  • ¥15 Android aidl for hal
  • ¥15 STM32CubeIDE下载程序报错
  • ¥15 微信好友如何转变为会员系统?(相关搜索:小程序)
  • ¥15 c# 直接使用c++ 类库文件