javascript中回调的目的

时间:2014-03-04 13:53:50

标签: javascript callback

也许有人会将我的问题标记为重复,否则我会对callback中的JavaScript感到困惑。我从here读了下面一段代码

getText = function(url, callback) // How can I use this callback?
{
var request = new XMLHttpRequest();
request.onreadystatechange = function()
{
    if (request.readyState == 4 && request.status == 200)
    {
        callback(request.responseText); // Another callback here
    }
}; 
request.open('GET', url);
request.send();
}
function mycallback(data) {
    alert(data);
}
getText('somephpfile.php', mycallback); //passing mycallback as a method

现在,如果我更改上述代码并删除callbacks,如下所示

getText = function(url) //Also remove from here  How can I use this callback?
{
var request = new XMLHttpRequest();
request.onreadystatechange = function()
{
    if (request.readyState == 4 && request.status == 200)
    {
        mycallback(request.responseText); //Now here i simply call that function
    }
}; 
request.open('GET', url);
request.send();
}
function mycallback(data) {
    alert(data);
}
getText('somephpfile.php'); //Remove (passing mycallback as a method)

那么现在有什么不同呢? 如果没有区别,那么为什么要使用callbacks

1 个答案:

答案 0 :(得分:1)

  

那么现在有什么不同呢?如果没有区别那么为什么要使用回调

您的第一个功能更通用(可重复使用)。你可以做所有这些:

getText('somephpfile.php', console.log); // or
getText('somephpfile.php', alert); // or
getText('somephpfile.php', mycallback); // or
getText('somephpfile.php', yourcallback); // or
getText('somephpfile.php', whatever);

表现不同。在第二个函数中,getText除了提醒ajax数据外,不能用于其他任何内容。