-2

一旦此函数返回回调,我想触发一个新函数。此处显示:在 JavaScript 中创建自定义回调我该怎么做?

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;
}
4

1 回答 1

0

如前所述,您在检查回调时已经在调用回调......然后调用它:

if(callback) callback(false);

运行此代码(jsFiddle 链接在底部)。它与您的代码的概念相同。

function doMe(something, callback) {
    console.log("Congrats, I did " + something);  
    if(callback) {
       callback();   
    }
}

doMe("the disco", function() {
   console.log("I'm a callback"); 
});
//I'm a callback

jsFiddle

或者,您可以使其更“字面化”并使用该call()方法来传递您的参数:

function doMe(something, callback) {
    console.log("Congrats, I did " + something);  
    if(callback) {
       callback.call(this, true);   
    }
}

doMe("the disco", function(bool) {
   console.log("I'm a callback. " + bool + " story"); 
});
// I'm a callback. true story

另一个小提琴

于 2013-05-16T12:50:48.307 回答