JQuery.when()没有像我期望的那样做

时间:2015-02-18 11:22:50

标签: jquery

所以我有以下代码。似乎在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;
    });
}

1 个答案:

答案 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;
&#13;
&#13;