簡體   English   中英

有人能解釋一下Callback功能嗎?

[英]Can Someone Explain me the Callback functions?

我最近開始學習javascript,我看到了很多回調函數。 這些功能是什么,為什么使用它們以及用於什么? 我很樂意得到真正的基本定義,因為我想理解它,因為我意識到它在js中非常重要。

謝謝 :)

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

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

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

主要的例子是事件:

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

或時間相關的電話:

// call someFunction after 30 seconds have elapsed
setTimeout(someFunction, 30000);

我們知道我們可以傳遞不同類型的變量,object作為函數的參數。 在javascript中,如果函數作為參數傳遞,那么它被稱為Callback funbction。

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

顧名思義,回調函數是匿名或命名函數,它們作為參數傳遞給另一個函數或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秒后的狀態繼續返回並且引擎跳轉到回調。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM