2014-01-25 32 views
0

我最近開始學習JavaScript,並且看到了很多回調函數。 這些功能是什麼,它們爲什麼使用以及用於什麼? 我很樂意得到真正的基本定義,因爲我想明白它,因爲我意識到它在js中非常重要。有人可以解釋我的回調函數嗎?

謝謝:)

回答

0

正如其名稱所暗示的,回調函數是作爲參數傳遞給另一個函數匿名或命名功能,或AJAX調用等,並將在JavaScript引擎完成某個動作後執行。

例如,一旦AJAX調用返回數據,就可以傳遞一個回調函數。爲了簡單起見,我使用jQuery:

$.ajax({ 
    url: "/my-api-path/", 
    data: myParams 
}).done(myCallback); 

這裏,myCallback是一個函數,一旦AJAX調用完成,它就會被執行。這種情況下的回調函數將被AJAX調用返回的響應對象調用。注意這個回調函數是如何作爲jQuery的AJAX API提供的.done方法的參數傳遞的。

在另一實例中,

setTimeout( 
function() { 
alert("Im inside a callback function!"); 
}, 2000); 

這裏包含警報的功能是第一兩個參數傳遞給在JavaScript中的setTimeout方法。第二個是應該執行該函數之後的毫秒數。由於此功能沒有名稱,因此稱爲匿名功能。

相同的代碼可以重新寫爲:

var myCallback = function(){ 
    alert("Im inside a callback"); 
}; 
setTimeout(myCallback, 2000); 

動作完成時回調將立即執行。因此,在引擎遇到setTimeout語句之後,它會將myCallback函數存儲在引用中,然後在setTimeout語句之後繼續執行。一旦經過2秒,它就會意識到執行回調的時間,因此執行將跳轉到回調。然後警報將執行,回調函數將終止並且執行將從2秒鐘過去並且引擎跳轉到回調的地方繼續。

希望這解釋了回調是如何工作的。

0

因爲我們知道我們可以通過不同類型的變量,對象作爲函數的參數。在JavaScript中,如果函數作爲參數傳遞,那麼它被稱爲回調函數。

在某些事件/條件上調用回調函數,直到程序可以執行其他代碼。回調函數只有在特定事件發生或特定條件滿足時纔會執行。

+0

你是什麼意思的事件? – PeeHaa

+0

事件意味着一些條件。 –

2

回調函數是您作爲參數傳遞給另一個函數的函數。

回調函數將被您傳遞給它的函數調用(或者鏈中的另一個函數)。

這通常是在函數執行異步操作時完成的,因此您不能使用返回值。

主要的例子是事件:

// call someFunction when the document is loaded 
addEventListener('load', someFunction); 

或時間相關的呼叫:

// call someFunction after 30 seconds have elapsed 
setTimeout(someFunction, 30000); 
相關問題