2009-06-11 22 views
1

我幾天前就認識了jQuery,並開始意識到它可以做的小魔術。如何執行參數的回調?

我很想知道在jQuery中如何執行具有參數的回調,即確切的執行順序是什麼?

我通過鏈接http://docs.jquery.com/Tutorials:How_jQuery_Works

去和它說話的錯誤的方式

$.get('myhtmlpage.html', myCallBack(param1, param2)); 

正道

$.get('myhtmlpage.html', function(){ 
    myCallBack(param1, param2); 
}); 

在第一種情況下, myCallBack將首先執行,然後它的返回值將作爲一個參數得到。在後一種方法中,get將返回將由myCallBack執行的網頁。

它是如何工作的語法都有myCallBack仍然是一個參數獲得?我對此有點困惑。

歡呼聲

回答

3

這確實是一個相當模糊的例子。你應該寫:

$.get('myhtmlpage.html', function(param1, param2){ 
    myCallBack(param1, param2); 
}); 

這是因爲內部的jQuery做這樣的事情(很簡單):

$.get = function(url, callback){ 
    //make call to url 
    //when completed execute callback: 
    callback(param1, param2); 
} 

你也可以這樣寫:

$.get('myhtmlpage.html', myCallBack); 

這也將調用myCallBack函數與這兩個參數。

1

首先,myCallBack(param1, param2)被立即評估並執行。在此語法中,它將在調用$.get()之前調用。

在第二種情況下,定義了一個未命名的匿名函數,其中包含myCallBack()供以後使用。它被存儲爲$.get()的參數,並且僅在調用$.get()之後才被觸發。

有關回調的更多信息,請參見Callback (computer science)維基百科。

0

如果您使用此語法:

myCallBack(param1, param2) 

你在做什麼被調用函數獲得的結果,就像任何其他的時間,你會調用一個函數。

如果您使用此語法:

myCallBack 

你是不是調用該函數,但提的功能,這就是爲什麼這種語法可以用來傳遞myCallBack函數作爲一個回調函數。

第三種方式:

function(){myCallBack(param1, param2);} 

將創建一個由以myCallBack函數調用的未命名的新功能。這可以傳遞給一個函數調用或分配給一個變量。另外,你應該小心使用這個語法,就像你在例子中做的那樣,因爲在這種情況下,param1和param2不受匿名函數的約束,並且可以是空白的或者用包含範圍。