2012-05-30 46 views
3

我是一個jQuery新手。我有一個核心js文件,這對我的用戶來說是不可見的。我在它裏面以下功能,使服務器請求 -jQuery - 如何註冊一個異步函數的回調?

function checkMsgs(t1,t2) { 

// poll the url 
    // return the results 

    $.get("http://www.mySite.com/web/test.php", { 
     "t1" : t1, 
      "t2" : t2 
    }, function(data) { 
    return data; 
}); 

} 

現在,我要調用此函數,而不會阻塞線程,即異步。如何在從此方法返回後進行函數調用,但不阻塞任何內容?

+1

'function(data){return data; }'是AJAX調用的回調函數。或者我誤解了你? –

+2

它不應該阻止任何東西 – PitaJ

回答

6

你不能從$.get「返回」,它不會那樣工作。你想要做的是將回調傳遞給checkMsgs,並在$.get完成後調用它。

function checkMsgs(t1, t2, callback) { 
    $.get("http://www.mySite.com/web/test.php", { 
     "t1": t1, 
     "t2": t2 
    }, function (data) { 
     // do whatever... 
     $.isFunction(callback) && callback(data); 
    }); 
} 

然後調用checkMsgs這樣的:

checkMsgs('a', 'b', function(data){ 
    console.log(data); 
}); 
+4

還有一個足夠的'jquery'方法來檢查變量類型:'$ .isFunction(callback)':) – VisioN

+0

@VisioN:整潔,不知道那個: -P –

6

返回的$.get從功能和一個回調添加到它。

function checkMsgs(t1,t2) { 
    return $.get("http://www.mySite.com/web/test.php"); 
} 

checkMsg("foo","bar").done(function(){ 
    alert("It's Done!"); 
}); 
相關問題