jQuery->Callbacks

Callbacks 是jQuery 1.7之后新加的一个工具,用于管理callback lists(函数数组)

 

作为码农,经常被灌输这样的逻辑:

真正厉害的不是写多么复杂的代码,而是写简单易懂的代码。

不明就里的人则会把她作为衡量代码质量的准则,并抓住每一个抱怨的机会说道,“这代码真复杂,是给人看的吗!”。


关于Callbacks基本使用,可以移步到Callbacks API 

 

下面说一下创建Callbacks对象时使用的四个参数类型

  • once 确保只能fire一次,全局变量fired和stack保证不会再次执行fireWith(fired记录是否之前执行过,stack保存下一次执行的上下文和函数参数,once选项时,stack=false),当只有once选项时,fire结束前,self.disable()-> list = stack = memory = undefined;

  • memory 确保添加的函数可以立即fire一次,函数参数为前一次fire时使用的参数,由全局变量memory保存

  • unique 确保add操作不会加入相同的函数

  • stopOnFalse 确保在fire时,如果队列中有函数返回false,则fire在该函数处退出,之后的函数也不会被执行。



理解了上面的内容还不足以看明白代码,因为上面的四个类型还可以进行组合使用。他们之间还存在相互关联

  • unique选项,在add操作时确保队列中无重复,和后续的执行无关联,因此和其它选项之间不存在交互

  • stopOnFalse和memory组合时的语义是: 当令fn()==false的函数出现前,执行memory选项的语义;当令fn()==false的函数出现后,终止memory选项的语义,此后fire执行stopOnFalse的语义。

  • once和memory组合时,此时的语义是:fire执行一次,之后add fn时fire当前添加的函数,参数使用第一次fire时的参数,与单独使用once选项不同,此时在fire结束前,执行的是list=[],而不是self.disable()

  • once memory和stopOnFalse的组合,当触发fn()==false的函数没有出现时,执行情况和once memory一致。当令fn()==false的函数出现后,执行disable()操作=>list = stack = memory = undefined;

 

[1]源码1.10.1

你可能感兴趣的:(JavaScript,jquery,Callbacks)