用法
jQuery.Callbacks( flags ) => Callbacks
jQuery.Callbacks( flags ) => Callbacks说明:multi-purpose 回调列表对象,它提供了一种强大的方法来管理回调列表。
$.Callbacks() 函数在内部用于提供 jQuery $.ajax() 和 $.Deferred() 组件背后的基本函数。它可以用作定义新组件函数的类似基础。
$.Callbacks() 支持多种方法,包括 callbacks.add() 、 callbacks.remove() 、 callbacks.fire() 和 callbacks.disable() 。
入门
以下是名为 fn1 和 fn2 的两个示例方法:
|
这些可以作为回调添加到 $.Callbacks 列表并按如下方式调用:
|
这样做的结果是,构建复杂的回调列表变得很简单,其中输入值可以轻松地传递给所需的尽可能多的函数。
上面使用了两种特定方法:.add() 和 .fire()。 .add() 方法支持将新的回调添加到回调列表中,而.fire() 方法执行添加的函数并提供一种方法来传递要由同一列表中的回调处理的参数。
$.Callbacks 支持的另一种方法是 .remove() ,它能够从回调列表中删除特定的回调。这是一个使用.remove()的实际示例:
|
支持的标志
flags 参数是 $.Callbacks() 的可选参数,其结构为以空格分隔的字符串列表,可更改回调列表的行为方式(例如 $.Callbacks( "unique stopOnFalse" ) )。
可能的标志:
once:确保回调列表只能被触发一次(如延迟)。memory:跟踪以前的值,并在列表被触发后立即使用最新的 "memorized" 值(如 Deferred)调用添加的任何回调。unique:确保回调只能添加一次(因此列表中没有重复项)。stopOnFalse:当回调返回 false 时中断调用。
默认情况下,回调列表将像事件回调列表一样,可以多次使用"fired"。
有关如何理想地使用 flags 的示例,请参见下文:
$.Callbacks( "once" ):
|
$.Callbacks( "memory" ):
|
$.Callbacks( "unique" ):
|
$.Callbacks( "stopOnFalse" ):
|
因为$.Callbacks()支持标志列表而不仅仅是一个,设置多个标志具有类似于"&&"的累积效果。这意味着可以组合标志来创建回调列表,比如说,两者都是独特和确保列表是否已被触发,添加更多回调将使用最新触发的值调用它(IE。$.Callbacks("unique memory"))。
$.Callbacks( 'unique memory' ):
|
带有 $.Callbacks() 的标志组合在 jQuery 内部用于 Deferred 上的 .done() 和 .fail() 函数——两者都使用 $.Callbacks('memory once') 。
$.Callbacks的方法也可以分离,如果为了方便需要定义short-hand版本:
|
$.Callbacks、$.Deferred 和 Pub/Sub
pub/sub(发布/订阅,或观察者模式)背后的总体思想是促进应用程序中的松散耦合。不是单个对象调用其他对象的方法,而是一个对象订阅另一个对象的特定任务或活动,并在它发生时得到通知。观察者也称为订阅者,我们将被观察的对象称为发布者(或主题)。发布者在事件发生时通知订阅者。
为了演示 $.Callbacks() 的 component-creation 函数,可以仅使用回调列表来实现 Pub/Sub 系统。使用$.Callbacks作为主题队列,一个主题发布和订阅系统可以实现如下:
|
然后,您的应用程序的某些部分可以很容易地使用它来发布和订阅感兴趣的事件:
|
虽然这很有用,但可以进一步实施。使用 $.Deferreds ,可以确保发布者仅在完成(解决)特定任务后才向订阅者发布通知。有关如何在实践中使用它的进一步评论,请参见下面的代码示例:
|
相关用法
- JQuery jQuery.inArray()用法及代码示例
- JQuery jQuery.when()用法及代码示例
- JQuery Mobile jQuery.mobile.path.get()用法及代码示例
- JQuery jQuery.grep()用法及代码示例
- JQuery Mobile jQuery.mobile.navigate()用法及代码示例
- JQuery Mobile jQuery.mobile.path.isRelativeUrl()用法及代码示例
- JQuery jQuery.dequeue()用法及代码示例
- JQuery jQuery.escapeSelector()用法及代码示例
- JQuery Mobile jQuery.mobile.silentScroll()用法及代码示例
- JQuery jQuery.cssNumber用法及代码示例
- JQuery jQuery.map()用法及代码示例
- JQuery jQuery.readyException()用法及代码示例
- JQuery jQuery.parseJSON()用法及代码示例
- JQuery jQuery.contains()用法及代码示例
- JQuery Mobile jQuery.mobile.path.makePathAbsolute()用法及代码示例
- JQuery jQuery.each()用法及代码示例
- JQuery jQuery.unique()用法及代码示例
- JQuery jQuery.getJSON()用法及代码示例
- JQuery jQuery.proxy()用法及代码示例
- JQuery jQuery.ajaxSetup()用法及代码示例
- JQuery jQuery.type()用法及代码示例
- JQuery jQuery.cssHooks用法及代码示例
- JQuery UI jQuery.effects.define()用法及代码示例
- JQuery jQuery.parseXML()用法及代码示例
- JQuery jQuery.support用法及代码示例
注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 jQuery.Callbacks()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
