zoukankan      html  css  js  c++  java
  • JS回调函数

    在使用Jquery的时候,用到Callback(),回调函数的概念。而且很多。

    比如:
    复制代码
    $.ajax({
        url:"test.json",
        type: "GET",
        data: {username:$("#username").val()},
        dataType: "json",
        beforSend:function(){ 
             // 禁用按钮防止重复提交
            $("#submit").attr({ disabled: "disabled" });
        }, 
        complete:function(msg){ 
            //请求完成后调用的回调函数(请求成功或失败时均调用)
        } , 
        error:function(msg){ 
            //请求失败时被调用的函数 
        } , 
        Sucess:function(msg){ 
            //请求成功后调用的回调函数 
        } 
    });
    复制代码
    回调函数大家都会用,只是Jquery封装了之后,不能让大家明白回调函数的真正使用。
    JS Api 里这样解释: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里调用的话,那么这个回调函数就被限制死了。但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以a(c)这个时候,函数c就成了回调函数。如果你写成了function a(){...;b();}就失去了变量的灵活性。下面是代码:
    <html> 
    <head> 
    <title>回调函数(callback)</title> 
    <script language="javascript" type="text/javascript"> 
    <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
    function a(callback) {    
        alert("我是parent函数a!"); 
        alert("调用回调函数"); 
        //callback(); 
        $("#id").load("page参数");
        d();
        alert(callback);
    function b(){ 
    alert("我是回调函数b"); 
    $("#id").load("page参数");
    e();
    function c(){ 
    alert("我是回调函数c"); 
    $.ajax({
    ...
    });
    d();
    function test() { 
        a(b); 
        a(c); 
    $(document).ready(function(){
    function d(){
    alert("我是Jquery定义的函数");
    }
    var e = function(){
    alert("我也是Jquery定义的函数")
    }
    }
    </script> 
    </head> 
    <body> 
    <h1>学习js回调函数</h1> 
    <button onClick=test()>click me</button> 
    <p>应该能看到调用了两个回调函数</p> 
    </body> 
    </html> 
     
    估计大家也看到了,我在a(callback),b(),c()方法里都写了Jquery的ajax函数,注意,这里是ajax的函数。是有区别的,我分别调用了内置函数,和自己定义的函数。区别就在这里,因为Jquery和JS用的callback是一样的,互通的,所以在这里,Jquery的内置函数会被调用了。
    但是自己定义的函数是不会被识别的,甚至会报没有这个function.
    (后面这段看得不是很理解,希望看到的高手请分析下)
    所以在回调的时候注意这点。
    http://www.cnblogs.com/xcsn/archive/2013/01/03/2843218.html
     
     

    function a(callback) {
    ...
    var record = reallyComplexProcedure(); //经过一系列复杂的操作,拿到了数据record
    if (typeof callback === "function") {
        callback(record);
      }
    }
    function b(data) {
    ... //对data做处理
    }
    a(b);

  • 相关阅读:
    SqlSession接口和Executor
    MySQL 存储表情字符
    Lisp学习--Windows下面的开发环境搭建
    使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
    GIT团队合作探讨之一-保持工作同步的概念和实践
    关于IE8下media query兼容的解决方案探讨
    git下的团队合作模型及git基础知识汇集
    互联网环境下服务提供的模式
    web统计数据搜集及分析原理
    网站统计及移动应用数据统计相关术语知识详解
  • 原文地址:https://www.cnblogs.com/zcm123/p/5343645.html
Copyright © 2011-2022 走看看