2017-02-04 25 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