jquery的回调对像Callbacks

      我们在日常开发中很少会用到Callbacks,但是我为什么会这么急着介绍Callbacks呢,因为接下我想说一下promise,这两部分有密切的联系至于什么联系到介绍promise时我们会明白的。

Callbacks它是一个多用途的回调函数列表对象,提供了一种强大的方法来管理回调函数队列。如下例子

function fn1(){
  alert(111)
}

function fn2(){
  alert(222)
}

var callBack = $.Callbacks();

callBack.add(fn1);

callback.add(fn2);

callback.fire();

 

    Callbacks它有四个可能的参数:once、memory、unique、stopOnFalse。当然也可以用数组的形式把四个都传入。once是不论几次调用fire队列里的函数只调用一次,memory是在fire之后再用add添加函数函数也会执行的,unique一个函数添加几次fire里只执行一次,stopOnFase函数retufn false里会中断执行。

可以看官网demo

我们来看源码

    这个工具方法里最重要的两个函数就是add和fire而fire是调用一名子是fire的私有方法实现的,所以我们只看add和fire

   

  • 通过判断参数是函数还是数组把传进来的参数在没有unique参数或都函数不在list数组中时放进list数组
  • 这里memory参数为ture里会自动调用私有fire方法,什么时候memory会为true呢?在私有fire方法的第一句可以看到memory = options.memory && data;这就实现了加memory参数时为什么会有记忆功能了,jquery的设计是不是很巧妙呢。

   接下来我们看一下私有fire方法

  • fire就是遍历list数组执行list里的函数顺便再把参数传递到要执行的函数里
  • stack存的是fireing期间再次fire的参数这里再重新执行一下如下代码
写道
var callBack = $.Callbacks();

function fn1(){
   alert(111)
   callback.fire()
}

function fn2(){
   alert(222)
}

callBack.add(fn1);

callback.add(fn2);

callback.fire();

 

 

   到这里我们是不是已经看出这个是什么模式,是不是观察者模式啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值