我有一个名为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 –