2017-10-11 91 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'的异步性质也很重要 –