Javascript 对象长度始终为0

Javascript 对象长度始终为0,javascript,ionic-framework,Javascript,Ionic Framework,当我执行console.log(accomdationSearchResultsData.length)时我总是在控制台中获得长度0,但实际上有2个对象 对象 示例代码 accountationbyid(){ var accomdationSearchResultsData=[]; var hotelSearchCount=0; this.api.accountationById(this.accountationId).subscribe(accountationResponse=>{ va

当我执行
console.log(accomdationSearchResultsData.length)时我总是在控制台中获得长度0,但实际上有2个对象

对象

示例代码

accountationbyid(){
var accomdationSearchResultsData=[];
var hotelSearchCount=0;
this.api.accountationById(this.accountationId).subscribe(accountationResponse=>{
var accomdation_id、accomdation_类型、accomdation_hotel、accomdation_id、accomdation_hotel id、accomdation_hotel名称、accomdation_hotel_city、accomdation_hotel_street、accomdation_hotel_state、accomdation_hotel_入住时间、accomdation_hotel_结帐时间;
var accomdation_id=accomdationResponse.id;
var accomdation_type=accomdationResponse.name;
this.AccomdationType=住宿类型;
对于(变量i=0;i{
accomdation_hotel_id=hotelResponse.id;
accomdation_hotel_name=hotelResponse.name;
accomdation_hotel_city=hotelResponse.city;
accomdationSearchResultsData.push({
账户id:账户id,
账户类型:账户类型,
accomdation_酒店:accomdation_酒店,
入住率:入住率,
住宿酒店标识:住宿酒店标识,
住宿酒店名称:住宿酒店名称,
});
});
}
this.accountationresults=accountationSearchResultsData;
console.log(accomdationSearchResultsData.length);
});
}
试试这个

setTimeout(function () {
        console.log(accomdationSearchResultsData.length);
    }, 2000);

我认为您只需在流程完成之前记录它。

这是一个非常脆弱的解决方案,它只需等待2秒钟。如果你的API调用时间超过2秒,这将不起作用。我只给了他代码,因为测试。这不是一个解决办法,我知道这一点。现在他明白了问题是计时,他应该运行一些onload函数。subscribe方法是异步的,所以您应该在subscribe方法中移动控制台调用。请参阅链接问题的答案以了解主要问题。您在控制台中看到的原因如下:
setTimeout(function () {
        console.log(accomdationSearchResultsData.length);
    }, 2000);