2010-09-01 86 views
6

javascript中回調函數的含義是什麼?回調函數含義

+13

堅持。讓我諮詢谷歌... – Lukman 2010-09-01 08:22:11

+3

盧克曼,請提供鏈接,OP可能從來沒有聽說過[Google](http://www.google.com/search?q=callback+function)。一些結果:[關於回調的維基百科](http://en.wikipedia.org/wiki/Callback_%28computer_science%29)[關於JS回調](http:// stackoverflow。COM /問題/ 483073 /獲取-A-更好地認識-的回調函數式的JavaScript)。 – Lekensteyn 2010-09-01 08:26:41

+5

不要這麼不合作你的兩個... – Cipi 2010-09-01 08:36:46

回答

6

這只是一個函數的名字,應該在某個東西后面回調。

它經常被用來使用XMLHttpRequest:

var x = new XMLHttpRequest(); 
x.onreadystatechange = function(){ 
    if(x.readyState == 4){ 
     callbackfunction(x.responseText); 
    } 
} 
x.open('get', 'http://example.com/', true); 
x.send(null); 

callbackfunction只是一個簡單的功能,在這種情況下:

function callbackfunction(text){ 
    alert("I received: " + text); 
} 
13

JavaScript的「回調」是可以通過一些其他的功能函數對象(如函數指針或委託函數),然後在函數完成時或需要時調用。例如,你可以有一個主要功能,您可以通過它將調用一個函數...

主要功能如下所示:

function mainFunc(callBack) 
{ 
    alert("After you click ok, I'll call your callBack"); 

    //Now lets call the CallBack function 
    callBack(); 
} 

你會這樣稱呼它:

mainFunc(function(){alert("LALALALALALA ITS CALLBACK!");} 

或者:

function thisIsCallback() 
{ 
    alert("LALALALALALA ITS CALLBACK!"); 
} 

mainFunc(thisIsCallback); 

這在JavaScript庫中廣泛使用。例如jQuery的animation()函數可以傳遞一個像這樣的函數在動畫結束時被調用。

將回調函數傳遞給其他函數並不保證它會被調用。執行回調調用(calBack())完全取決於該函數的實現。

連名字「回調」是不言自明... =)

3

除了僅僅是一個函數,一個回調函數是異步的應用程序設計的推動者。

而不是調用一個函數並等待返回值,可能會在單線程系統上鎖定線程或整個PC或UI,而您在等待時使用異步模式調用函數,它會返回之前完成,然後你可以退出你的代碼(返回到調用操作系統,空閒狀態,運行循環,無論什麼......)。然後,操作系統或異步函數會調回您的代碼。你想要回調的代碼通常封裝在一個叫做「回調函數」的地方。還有其他用途,但這是OOP UI框架中常見的用法。

使用最新的iOS 4.x,您還可以使用無名的「塊」作爲回調。但沒有塊的語言(或以其他名稱匿名封閉)使用函數進行函數回調。

+0

一些舊的操作系統只是使用全局指令地址進行回調(它不一定需要是「函數」的地址。 – hotpaw2 2010-09-01 08:39:45

-1

您可以簡單地使用後退按鈕的下面的語句onClick事件:

OnClick="javascript:history.go(-1)" 

也將努力帶你回到你以前,你最近訪問過的頁面。