2013-05-16 57 views
-2

一旦這個函數返回一個回調函數,我想觸發一個新的函數。顯示在這裏:Create a custom callback in JavaScript我該怎麼做?從onload使用回調?

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; 
} 
+1

請參考... http://stackoverflow.com/questions/2190850/create-a-custom-callback-in-javascript –

+0

我不確定你的意思是什麼*「一旦這個函數返回一個回調」*。您可以調用回調中的其他函數,也可以在調用回調後調用,這取決於代碼的相關性。 –

+0

該函數不會*返回*回調,它沒有'return'語句。 – Quentin

回答

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 

another fiddle