jQuery - 如何为异步函数注册回调?

时间:2012-05-30 20:39:49

标签: javascript jquery

我是一个jQuery新手。我有一个核心js文件,我的用户看不到。我在其中有以下函数来发出服务器请求 -

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;
});

}

现在,我想调用此函数,而不是阻塞线程,即异步。如何在从此方法返回后进行函数调用,但不阻塞任何内容?

2 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分:6)

从函数中返回$.get并向其添加回调。

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

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