各位朋友帮忙我解释下javaScript的回调函数把!最近对这个一直不能理解

解决方案 »

  1.   

    回调函数 其实就是一般普通的函数而已,这“回调 ”一般是在AJAX应用中出现的称呼,就是AJAX返回的结果处理函数。 
    回调函数 是有特殊事件触发的函数。
      

  2.   

    为什么用AJAX可以实现局部刷新,而不是整个页面刷新,为什么AJAX与后台交互叫异步交互,这里的回调函数所起到的作用是至关重要的,在回调函数执行的过程中,不会影响页面其它的操作
      

  3.   

    回调的意思是,你的代码不阻塞在那边等Server结果返回,而是给浏览器一个函数句柄,等Server回结果给浏览器的时候,浏览器调用该函数,将页面进行更新。
      

  4.   

    回调并不限于AJAX中。普通的函数调用组织里,根据情况需要也就可以使用。
      

  5.   

    有的回调函数是不阻塞的(比如ajax) 有的则是阻塞的(比如同步的ajax)我不知道该如何描述 但是如果LZ你知道递归的话 你就会发觉这跟回调函数很相像建议LZ看下百度百科 很详细的介绍
      

  6.   

      因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。 这是重点另外 如果LZ用JAVA的话 并且用过Spring提供的Hibernate的回调函数的话(HibernateCallBack)的话 你会对回调函数真正的意义更加了解 首先我们提供一个函数对象交给Spring去处理 为什么交给他去处理?因为调用者持有Session 而你没有 假设你想要拧一个螺丝 而你手头没有螺丝 另一个人有螺丝 所以你委托另外一个人在不把螺丝刀交给你的情况下帮你把螺丝拧上 (当然你可以在他拧上螺丝这段时间去做别的事情 也就是异步)
    ..北京第一次回技术贴 如果我没说清楚 望回复
      

  7.   

    $.getJSON("aaa.do",{1:1},function(json){
    })先执行aaa.do并且传递1去后台action中处理完毕之后
    再执行
    function(json){
    alert('aaa');
    }
    这里面的内容...这就叫做回调函数、、、就是执行完毕之后调用的函数。。
      

  8.   


    9L我已经说明了关于回调的目的了 话说回来。。你没将AJAX的请求设置过成同步么? 就是阻塞到回调方法结束...
      

  9.   

    回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。简而言之就是由你定义的,但不是由你调用的函数。javascript的话最频繁接触的就是浏览器事件源,自定义事件源等等最简单的
    <script>    function formLoad() {alert("load");}
    </script>
    <body onload="formLoad();"></body>这里的formLoad就是回调函数啊
    为了调用formLoad,你必须要传递函数指针,方便浏览器事件源调用,否则浏览器怎么知道你要调用什么函数啊
    那么onload="formLoad();"就是函数指针传递了。当然,如果再学下去,你就会发现,回调函数就是观察者模式中的观察者方法,但那也是后话了。
      

  10.   

    回调,只是一种概念,一种设计思想,其存在的价值在于由被调用的方法或者函数来决定当前指定的操作
    在何时以及如何被执行,这和AJAX以及同步异步本身是没有关系的在JAVA中回调的经典案例是JdbcTemple,java中的回调需要通过接口来实现,相信很多人有使用经验在JS中是通过JS的闭包特性来实现的,闭包是允许将函数作为参数传输的,函数本身也是对象,JS中的
    回调之所以可以在异步条件下生存就源于闭包特性,闭包的主要特性不是函数参数,而是函数作为参数时
    其相关的资源的生命周期会超出定义的空间,这也是JS内存泄漏的隐患(如果处理不好的话)新的JAVA也在征求加入闭包特性的意见看问题要看到本质,概念要清晰才好
      

  11.   


    俺一直只是想强调 有些操作不使用回调函数是无法完成的 回调函数中我们可以使用调用者提供的一些参数(比如ajax中的response) 你无法直接使用response 因为你的确不知道他在什么时候下有效 就像13L说的那样 所以要等到有能力确认该条件有效的人去调用 异步和同步就是后话了 你可以选择等待回调结束后执行什么操作 也可以选择在对方执行回调的时候干些其他的事情 我一般都是自己有体会才会解释的 所以描述方面可能更粗糙些 阿门...
      

  12.   


    在后台,代理模式被广泛运用。元方法也可以理解为回调。目的是为了更快的拆卸或者是安装业务。比如javaEE的Filter,struts2的拦截器,Spring的aop。但在前台js,事件源,触发器,观察者action的组合更多的还是观察者模式。特别是写组件事件的时候。