初看Callbacks函数很不起眼,但仔细一瞅,发现Callbacks函数是构建jQuery大厦的无比重要的一个基石。jQuery中几乎所有有关异步的操作都会用到Callbacks函数。

为什么搞了个Callbacks函数?

  1  在 js 开发中,经常会遇到同步和异步这两个概念。

  2  在javascript中神马是同步?神马是异步? 听我讲一个相亲的故事(本故事并不准确,仅供参考):

    1 藤篮是一个漂亮姑娘,明年就要30岁了可现在还没有对象,于是,她的母亲给她报名了两家相亲机构,一家名叫同步相亲机构,另一家叫异步相亲机构。

    2 同步相亲机构:这个机构的负责人很呆板,严格遵从“先来后到”的理念

      负责人首先给藤篮一个小册子,里面记录了很多的男士资料,让藤篮从里面找一个心仪的男士,然后安排藤篮与他见面。

      藤兰很快选中了令狐冲。负责人告诉藤篮:“令狐冲明天和任女士有约,你们只能后天见面了“。藤篮说:“好的,我正好准备准备”。

      结果两天过后,负责人告诉藤篮:因为昨天任女士有事,没能和令狐冲见面,所以我们安排今天任女士与令狐冲见面,你到明天再约吧!

      藤篮很生气:既然昨天任女士有事,为啥不安排让我昨天和令狐冲见面呢?

      负责人说:不行!俺们讲究的是先来后到! 因为任女士先约的令狐冲,甭管怎么着,你都得排在任女士后面

      藤篮很生气! 于是来到了异步相亲机构。

    3 异步相亲机构:这个机构的负责人则很灵活:

      一般情况下遵从先来后到的理念,特殊情况特殊对待。

      藤篮很喜欢这个负责人的理念,于是和这里的负责人携手一生.......

    4 再来总结一下:Javascript语言的执行环境是"单线程",所谓"单线程",就是指一次只能完成一件任务。

      同步就是: 后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的、同步的

      异步就是:一个任务可能有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而执行回调函数

        后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的

  3  上面异步中讲到,一个任务可能有一个或多个回调函数,假如a任务有a1,a2,a3这三个回调函数,b也需要a1,a2,a3这三个回调函数。我们需要这样做:

    function a1(){
        
    }
    function a2(){
        
    }
    function a3(){
        
    }
    var a = setTimeout(function(){
        a1();
        a2();
        a3();
    },1000);
    var b = setTimeout(function(){
        a1();
        a2();
        a3();
    },2000)
View Code

相关文章: