2017-02-04 54 views
0

当我做console.log(accomdationSearchResultsData.length);我总是在控制台0的长度,但实际上有2个对象对象的长度总是0

对象

enter image description here

示例代码

accommodationById() { 
    var accomdationSearchResultsData = []; 
    var hotelSearchCount = 0; 

    this.api.accommodationById(this.accomodationId).subscribe(accomdationResponse => { 
     var accomdation_id, accomdation_type, accomdation_hotel, accomdation_id, accomdation_rate, accomdation_hotel_id, accomdation_hotel_name, accomdation_hotel_city, accomdation_hotel_street, accomdation_hotel_state, accomdation_hotel_checkin_time, accomdation_hotel_checkout_time; 

     var accomdation_id = accomdationResponse.id; 
     var accomdation_type = accomdationResponse.name; 
     this.accomodationType = accomdation_type; 

     for (var i = 0; i < accomdationResponse.Rooms.length; i++){ 
      accomdation_hotel = accomdationResponse.Rooms[i].hotel; 
      accomdation_rate = accomdationResponse.Rooms[i].rate; 

      this.api.getHotelByAPI(accomdation_hotel).subscribe(hotelResponse => { 

      accomdation_hotel_id = hotelResponse.id; 
      accomdation_hotel_name = hotelResponse.name; 
      accomdation_hotel_city = hotelResponse.city; 

      accomdationSearchResultsData.push({ 
       accomdation_id: accomdation_id, 
       accomdation_type: accomdation_type, 
       accomdation_hotel: accomdation_hotel, 
       accomdation_rate: accomdation_rate, 
       accomdation_hotel_id: accomdation_hotel_id, 
       accomdation_hotel_name: accomdation_hotel_name, 
      }); 
      }); 
     } 

     this.accomodationResults = accomdationSearchResultsData; 
     console.log(accomdationSearchResultsData.length); 
    }); 
} 
+2

订阅方法是异步的,因此您应该在订阅方法内移动控制台调用 –

+1

请参阅链接问题的主要问题答案。你看到你在控制台中看到的原因在这里:http://stackoverflow.com/questions/38660832/element-children-has-elements-but-returns-empty-htmlcollection –

回答

-2

试试这个

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

我认为,你只要登录其过程完成之前。

+2

这是一个非常脆弱的解决方案,它只需等待2秒钟。如果您的API调用时间超过2秒,则这不起作用。 – Soviut

+0

因为测试,我只给了他代码。 这不是一个解决方案,我知道这一点。 现在他明白,问题是时机,他应该运行一些onload函数。 – BARNI