2017-10-11 205 views
0

我有一個功能,以幫助顯示圖像縮略圖 我最初叫出以這種格式中的變量數組值沒有顯示

(function(){ 
var catalog = { 

thumbnails: [ 
    'https://farm6.staticflickr.com/5576/18670011368_b25a92d37e_k.jpg', 
    'https://unsplash.imgix.net/photo-1428930377079-45a584b6dd6b?fit=crop&fm=jpg&q=75&w=1050', 
    'https://unsplash.imgix.net/photo-1428976365951-b70e0fa5c551?fit=crop&fm=jpg&h=700&q=75&w=1050', 
    'https://ununsplash.imgix.net/photo-1422207134147-65fb81f59e38?fit=crop&fm=jpg&h=800&q=75&w=1050', 
] 
. 
. 
. 
catalog.init(); 

我需要與火力imageUrls替換縮略圖所以我創建一個空數組並得到一些變量的快照值和imageurls功能

var thumbnails = []; 

function showproductpage(element){ 


var itemdetailref = Cataloguedatabase.ref('/Listings/'+ listingID); 

return itemdetailref.once('value').then(function(snapshot){ 
    var results=snapshot.val(); 
var mainimage = results.ProductImageUrl; 
var thumbnail1 = results.ProductImage1Url; 
var thumbnail2 = results.ProductImage2Url; 

    thumbnails.push(mainimage,thumbnail1,thumbnail2); 

} 

所以我的更新縮略圖功能看起來像這樣

(function(){ 
var catalog = { 

thumbnails , 
.... 

catalog.init(); 
})() 

但是當我運行這個沒有圖像出來的縮略圖和控制檯上沒有顯示錯誤。我做錯了什麼,我該如何解決這個問題?

+0

你在哪裏執行'showproductpage'? –

+0

@JaromandaX在thumnail函數調用之前執行它 – learner101

+0

但它是異步的 –

回答

0

自動調用函數在圖像加載之前調用。嘗試在自我調用功能中替換圖像。

編輯:

正如評論所說,你的函數的異步性質也很重要。當函數被調用時,程序的執行會繼續,所以你的數組是空的。我建議你使用Promise對象,然後用你的thumbnails連鎖其他操作。

+0

'showproductpage'的異步性質也很重要 –