jQuery的Callbacks机制
讲了 Deferred ,现在再来看 Callbacks ,这才是本源。事实上, Deferred 机制,只是在 Callbacks 机制的上层进行了一层简单封装而且。 Callbacks 对象,才是真正的 jQuery 中定义的原始的回调管理机制。
var obj = $.Callbacks(); obj.add(function(){console.log('1')}); obj.add(function(){console.log('2')}); obj.fire();
Callbacks 对象的初始化支持一组控制参数:
- $.Callbacks( flags )
- 初始化一个回调管理对象。 flags 是空格分割的多个字符串,以定义此回调对象的行为:
- once 回调链只能被激发一次
- memory 回调链被激发后,新添加的函数被立即执行
- unique 相同的回调函数只能被添加一次
- stopOnFalse 当有回调函数返回 false 时终止调用链的执行
Callbacks 的控制方法:
- callbacks.add()
- 添加一个或一串回调函数
- callbacks.fire()
- 激发回调
- callbacks.remove()
- 从调用链中移除指定的函数
- callbacks.empty()
- 清空调用链
- callbacks.disable()
- 关闭调用链的继续执行,新添加的函数也不会被执行
- callbacks.lock()
- 锁定调用链,但是如果打开了 memory 的 flag ,新添加的函数仍然会执行
- callbacks.has()
- 检查一个函数是否处于回调链之中
- callbacks.fired()
- 检查调用链是否已经被激发
- callbacks.locked()
- 检查调用链是否被锁定