js回调函数(callback)理解

Mark!

js学习

不喜欢js,但是喜欢jquery,不解释。

自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗。迅速google之,发现原来中文翻译成回调。也就是回调函数了。不懂啊,于是在google回调函数,发现网上的中文解释实在是太“深奥”了,我承认自己才疏学浅了。看了几个回调的例子后,貌似有点理解了。下面是我对回调函数的理解,要是理解错了,请指正,不甚感激。

首先还是从jquery网站上的英文定义入手,身为国人,我真感到悲剧。一个回调的定义被国内的“高手”解释成什么样,就在那绕圈子,貌似只有把你绕进去了,他才算高手。浮云,一切都是浮云。

A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

这是js里的解释了,其他语言的算我没说。

字面上理解下来就是,回调就是一个函数的调用过程。那么就从理解这个调用过程开始吧。函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。

其实中文也很好理解:回调,回调,就是回头调用的意思。函数a的事先干完,回头再调用函数b。

举个现实的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。”对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。

其实这就是一个回调的过程。你留了个函数b(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是函数a。她必须先回到家以后,函数a的内容执行完了,再执行函数b,然后你就收到一条信息了。

这里必须清楚一点:函数b是你以参数形式传给函数a的,那么函数b就叫回调函数。

也许有人有疑问了:一定要以参数形式传过去吗,我不可以直接在函数a里面调用函数b吗?确实可以。求解中。

<解惑:如果你直接在函数a里调用的话,那么这个回调函数就被限制死了。但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以a(c)这个时候,函数c就成了回调函数。如果你写成了function a(){...;b();}就失去了变量的灵活性。>

下面用代码来证实我的理解。

<html> 

<head> 

<title>回调函数(callback)</title>
<script language="javascript" type="text/javascript">
function a(callback)
{
    alert("我是parent函数a!");
    alert("调用回调函数");
    callback();
}
function b(){
alert("我是回调函数b"); 

}
function c(){
alert("我是回调函数c"); 

} 

function test()
{
    a(b);
   a(c);
} 

</script>
</head> 

<body>
<h1>学习js回调函数</h1>
<button onClick=test()>click me</button>
<p>应该能看到调用了两个回调函数</p>
</body> 

</html>

转载:http://luxiao1223.blog.51cto.com/2369118/482885

针对javascript回调函数传参数的简单实例

问题:

现在有函数如下定义:
function A(a,callback){
....
}
function B(){
....
}
则可以有如下调用
A(a,B);来实现回调。

现在我希望传给B一个参数c,即实现类似于:

A(a,B(c));的效果,各位高手帮帮忙,应该如何实现?

解答:

    1. <html>
    2. <head>
    3. <title>
    4. jsp3
    5. </title>
    6. </head>
    7. <body bgcolor="#ffffff">
    8. <script language="javascript" type="text/javascript">
    9. function A(a,callback){
    10. var b=callback;
    11. alert(a+b);
    12. }
    13. function B(c){
    14. return (-c);
    15. }
    16. </script>
    17. <form method="post" action="jsp3.jsp">
    18. <br><br>
    19. <input type="button" name="Submit" value="Submit" onclick="A(4,B(3));">
    20. </form>
    21. </body>
    22. </html>

转载于:http://blog.sina.com.cn/s/blog_4bb52a160100da4w.html

<span style="font-size:14px;">我包装了jQuery的ajax方法
function doAjax(u,param,callback){
      $.ajax({
            type:‘POST‘,
            url:u,
            data:param,
            success:callback
      });
}

function showAlert(data){
     alert(data);
}

比如这样调用 doAjax("server.php","id=12&type=1",showAlert);
$.ajax 在success后,会返回一个data到showAlert中,显示出来 ,没有问题.
可是,当我想多传一个参数给showAlert时怎么写?
写成doAjax("server.php","id=12&type=1",showAlert("hi",data))、或者把上面的success:callback 写成success:callback(msg,data)显然都不行,如之奈何?求助~~~</span>

  

<span style="font-size:14px;color:#333333;">简单,很多方法都定义了回调函数,回调函数也是函数,就是说不管怎么传,只需要是个函数类型即可。写法如下。
方式1,
doAjax(参数1,参数2,function(request,opts){
         callback(request,opts,agrs);
 });
function callback(request,opts,args){

};
方式2,
var args=N;
doAjax(参数1,参数2,function(request,opts){
       var X=N;
       回调函数代码块..
       和以上几乎一样,看个人编码方式选择。
});</span>

  

越不想学什么,越就被什么所折磨。看看javascript回调吧。 直接上码吧。。

    1. <</span>html>
    2. <</span>head>
    3. <</span>title>回调函数(callback)</</span>title>
    4. <</span>script language="javascript" type="text/javascript">
    5. function a(callback){
    6. alert("我来自父函数a");
    7. callback();
    8. }
    9. function b(){
    10. alert("我来自子(回调)函数 b");
    11. }
    12. function c(){
    13. alert("我来自子(回调)函数 c");
    14. }
    15. function test(){
    16. a(b);
    17. a(c);
    18. }
    19. //--------------------下面2个函数简单演示了从父函数传递给回调函数----------
    20. //Callback 就是一个参数名 这个参数代表的是一个函数 暂且不要管这个函数有没有参数
    21. //  。。。 应该还有其他写法吧?
    22. function e(m,n,Callback){
    23. var d = m+n;
    24. alert("一个从父函数e 产生的参数将要被传递给回调函数 ,这个参数是:"+d);
    25. //这里才写你想调用的函数---参数要正确
    26. Callback(d);
    27. //-----------
    28. }//     |
    29. //      |
    30. function callback(data){
    31. alert("我是回调函数,我的名字叫:callback ,我接收到来自父函数的参数,参数是:"+data);
    32. }
    33. </</span>script>
    34. </</span>head>
    35. <</span>body>
    36. <</span>h2>a CallBack is a function that is passed as an argument to another function and is executed after its parent function has completed;</</span>h2>
    37. <</span>hr />
    38. <</span>a href="#" onclick="javascript:test();">不传递参数的Callback</</span>a><</span>br />
    39. <</span>br />
    40. <</span>br />
    41. <</span>br />
    42. <</span>a href="#" onclick="javascript:e(7,8,callback);">传递参数的Callback</</span>a>
    43. <</span>hr />
    44. </</span>body>
    45. </</span>html>

转载于:http://blog.sina.com.cn/s/blog_601b97ee0101f1rc.html

时间: 2024-12-26 10:18:22

js回调函数(callback)理解的相关文章

js回调函数(callback)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://luxiao1223.blog.51cto.com/2369118/482885 Mark! js学习 不喜欢js,但是喜欢jquery,不解释. 自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗.迅速google之,发现原来中文翻译成回调.也就是回调函数了.不懂啊,于是在google回调函数,发现网上的中文解释实在是太"深奥"了,我承认自己

JS回调函数(理解篇)

概述: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 定义: 在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函数. 因此callba

关于js的callback回调函数的理解

回调函数的处理逻辑理解: 所谓的回调函数处理逻辑,其实就是先将回调函数的代码 冻结(或者理解为闲置),接着将这个回调函数的代码放到回调函数管理器的队列里面. 待回调函数被触发调用的时候,对应的回调函数的代码才会从管理器队列取出来并自动执行(激活回调函数的代码),实现异步的编程效果. 不过,对于一些必须要等回调函数执行完毕才可以确定的动作,实际上,就是会掉入一个层层回调的局面了.这点也是回调函数的复杂的地方! 换句话说,只要您要获取的值是要被回调才确定的,那接下来的所有代码都必须用回调的方式来编写

理解javascript中的回调函数(callback)

以下内容来源于:http://www.jb51.net/article/54641.htm 最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: app.use(function(req, res, next) {    var err = new Error('Not Found');    err.status = 404;    next(err);}); app是对象,use是方法,方

理解javascript中的回调函数(callback)【转】

在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实际上是一种对象,它可以"存储在变量中,通过参数传递给(别一个)函数(function),在函数内部创建,从函数中返回结果值". 因为function是内置对象,我们可以将它作为参数传递给另一个函数,延迟到函数中执行,甚至执行后将它返回.这是在JavaScript中使用回调函数的精髓.本篇文

对JS回调函数的一点理解

之前写的异步JS是纯译文,现在刚好工作了2个月,想谈谈我自己对JS回调函数的一点理解,欢迎渴望大家的指正和交流. 回调函数从形式上看就是把函数b作为参数传给函数a,在a的函数体里调用函数b 1 function a(b) { 2 b(); 3 } 4 function b() { 5 ... 6 } 这样做的意义是什么呢 1.控制执行流程,函数b只能在函数a执行后才执行 2.根据不同的需求,可以有各种各样的函数b 3.最重要的,是可以把通过函数a获取的数据传递给函数b 1 function a(

理解 JS 回调函数中的 this

理解 JS 回调函数中的 this:https://www.cnblogs.com/gavinyyb/p/6286750.html 原文链接:http://www.tuicool.com/articles/z2Yvaq 任何变量或对象都有其赖以生存的上下文.如果简单地将对象理解为一段代码,那么对象处在不同的上下文,这段代码也会执行出不同的结果. 例如,我们定义一个函数 getUrl 和一个对象 pseudoWindow . function getUrl() { console.log(this

浅谈js回调函数

回调函数原理: 我现在出发,到了通知你”这是一个异步的流程,“我出发”这个过程中(函数执行),“你”可以去做任何事,“到了”(函数执行完毕)“通知你”(回调)进行之后的流程 例子 1.基本方法 ? 1 2 3 4 5 6 7 8 9 10 11 12 <script language="javascript" type="text/javascript"> function doSomething(callback) { // … // Call the

JS回调函数全解析教程

转自:http://blog.csdn.net/lulei9876/article/details/8494337 自学jQuery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗.迅速google之,发现原来中文翻译成回调.也就是回调函数了.不懂啊,于是在google回调函数,发现网上的中文解释实在是太"深奥"了,我承认自己才疏学浅了.看了几个回调的例子后,貌似有点理解了.下面是我对回调函数的理解,要是理解错了,请指正,不甚感激. 首先还是从jquery网站上的英文定义入