以下代码如何解决异步获取数据的问题? 不影响功能,但是会报错,看着不是很舒服。
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()
}