回调函数含义

6
在JavaScript中,回调函数的含义是什么?

3
Lukman,请提供链接,因为OP可能从未听说过Google。这是一些结果:Callback的维基百科页面JS回调函数的SO页面 - Lekensteyn
6
你们两个不要那么不合作... - Cipi
4个回答

13

JavaScript的“回调(callback)”是函数对象,可以传递给其他函数(类似于函数指针或委托函数),然后在函数完成时或需要执行时进行调用。例如,您可以有一个主函数,可以向其传递一个函数,它将调用该函数......

主函数可能看起来像这样:

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()函数可以传递一个类似这样的函数,在动画结束时被调用。

将回调函数传递给其他函数并不能保证它将被调用。执行回调函数(callBack())完全取决于该函数的实现。

甚至“回调”这个名称本身就很自说明... =)


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

3
除了作为函数以外,回调函数还是异步应用程序设计的一种实现方式。与其等待返回值(可能会锁定线程或整个PC或单线程系统的UI),通过异步模式,您可以调用一个函数,它在完成前就返回,然后您可以退出代码(返回到调用操作系统、空闲状态、运行循环等)。然后,操作系统或异步函数稍后会将您的代码回调。您想要回调的代码通常封装在称为“回调函数”的东西中。这是面向对象用户界面框架中常见的用法之一。
在最新的iOS 4.x中,您还可以使用匿名的“block”来进行回调。但是没有块(或另一个名称下的匿名闭包)的语言使用函数进行函数回调。

一些旧的操作系统只是使用全局指令地址来进行回调(这些地址不一定需要是“函数”的地址)。 - hotpaw2

-2

您可以在返回按钮的onClick事件中简单地使用以下语句:

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

它可以帮助您返回最近访问过的上一页。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接