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

  • 相关阅读:
    7.21 高博教育 数组 内存
    【基础扎实】Python操作Excel三模块
    PAT 甲级 1012 The Best Rank
    PAT 甲级 1011  World Cup Betting
    PAT 甲级 1010 Radix
    链式线性表——实验及提升训练
    循环程序设计能力自测
    链表应用能力自测
    PAT 甲级 1009 Product of Polynomials
    1008 Elevator (20分)
  • 原文地址:https://www.cnblogs.com/zcm123/p/5343645.html
Copyright © 2011-2022 走看看