我有一個名爲PhotoTags,有一個叫getScalePercent()函數類。在getScalePercent我做了一個簡單的計算,涉及顯示圖像的寬度和高度,並返回一個值。在PhotoTags的渲染功能中,我使用座標數據在圖片上應用元素。只有在圖像已經加載100%的情況下,該邏輯才能正常工作。如果我刷新頁面的次數足夠多,我可以看到我的邏輯實際上正確地設置了座標,但只有在圖像已被緩存或快速加載後才能進行。因此,我想使用imagesLoaded檢查圖像是否已加載,以便有效地使用座標。陣營與imagesLoaded,解決了最後一個值呈現
我的功能看起來是這樣的:
getScalePercent(){
var p =0;
var targetWidth = $('.expanded-image').width();
var targetHeight = $('.expanded-image').height();
p = (targetWidth/1920);
return p;
}
在我的渲染)功能,我想使用imagesLoaded檢查圖像是否使用getScalePercent(之前被加載:
render(){
var p = 0;
$('.expanded-image').imagesLoaded().done(function() {
p = this.getScalePercent();
});
console.log(p); //But value is still 0
//I then want to use p later in the render function
我的變量p沒有在imagesLoaded的.done事件中被操縱。我知道這與異步調用有關,什麼不是,我已經嘗試了將圖片加載到getScalePercent()但無濟於事。我也嘗試做一個回調getScalePercent()和許多其他變化,但仍然無濟於事。基本上我想要做的是在imageLoaded的.done()事件中激發getScalePercent()。然後,我希望能夠在PhotoTags的渲染函數內使用返回值(當圖像完全加載時)返回getScalePercent()的值。任何幫助深表感謝。
所以,你必須使用''裏面回調done'到p'設置你的邏輯或它的函數調用傳遞'p'作爲參數 –
http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call –