我有一个使用.onload触发的功能。我想返回一个值:

newImg.onload = function() {
    var height = newImg.height;
    var width = newImg.width;
    if(height > width){
        console.log(false);
        return false;
    } else {
        console.log(true);
        return true;
    }
 }
 newImg.src = imgSrc; // this must be done AFTER setting onload


通常我会做类似的事情

var foo = function(){...


但这在这种情况下不起作用。我该怎么办呢?

最佳答案

异步调用不能返回值。您将需要像在Ajax请求中那样使用回调。

function loadImg (imgSrc, callback) {
    var newImg = new Image();
    newImg.onload = function() {
        var height = newImg.height;
        var width = newImg.width;
        if(height > width){
            console.log(false)
            if(callback) callback(false);
        } else {
            console.log(true)
            if(callback) callback(true);
        }
     };
     newImg.onerror = function () {
         if(callback) callback('error');
     };
     newImg.src = imgSrc;

}

loadImg("foo.gif", function(status) { console.log("Do Next Step"); })

关于javascript - 如何获得foo.onload = function(){的响应?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16587236/

10-09 07:07