所以我有以下代码。似乎在JQuery中,我不想得到照片的宽度和高度,有一个小延迟来照片(可能是因为照片的大小3.6MB)所以我谷歌搜索并发现JQuery.when()函数。但是如果我在代码下运行,它将首先警告$ fotoWidth和$ fotoHeight(NaN-NaN),之后警报从2个函数触发。但那是因为$ vehoudingFoto已经将NaN作为价值。一些提示或建议如何解决这个问题?如果不使用$ .when()那么可能还有其他功能吗?
$.when(getOriginalWidthOfImg(image2),getOriginalHeightOfImg(image2)).then(function($fotoWidth,$fotoHeight) {
alert($fotoWidth+" - "+$fotoHeight);
$verhoudingFoto=$fotoWidth/$fotoHeight;
});
function getOriginalWidthOfImg(img_element) {
var tW = new Image();
tW.src = img_element;
$(tW).on('load',function(){
orgWidth = tW.width;
alert(orgWidth);
return orgWidth;
});
}
function getOriginalHeightOfImg(img_element) {
var tH = new Image();
tH.src = img_element;
$(tH).on('load',function(){
orgHeight = tH.height;
alert(orgHeight);
return orgHeight;
});
}
答案 0 :(得分:0)
在你的情况下,我认为你可以使用一个简单的callbak,不需要延迟...
getOriginalDimensionsOfImg(image2, function (width, height) {
alert(width + " - " + height);
})
function getOriginalDimensionsOfImg(src, callback) {
var tW = new Image();
$(tW).on('load', function () {
callback(tW.width, tW.height);
});
tW.src = src;
}
function test(image2) {
getOriginalDimensionsOfImg(image2, function(width, height) {
console.log(image2, width + "X" + height);
})
}
function getOriginalDimensionsOfImg(src, callback) {
var tW = new Image();
$(tW).on('load', function() {
callback(tW.width, tW.height);
});
tW.src = src;
}
test('//placehold.it/32');
test('//placehold.it/64');
test('//placehold.it/32X64');
test('//placehold.it/32');

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;