注册 | 登陆
您的位置:阿里西西 > 前端技术 > 脚本技术 > 详细内容

jQuery回调对象

  稿源:互联网   2015-08-03 23:48:26   点击:   撤稿纠错

以下讨论的是和相关的jQuery回调对象 教程文章,内容是本站精心挑选整理的教程,希望对广大的网友给到帮助,下面是详细内容:


jQuery向开发者提供了外部接口调用,但是$.Callbacks()模块的开发目的是为了给内部$.ajax() 和 $.Deferred()模块提供统一的基本功能组件。它可以用来作为类似基础定义的新组件的功能。

jQuery.Callbacks是jquery在1.7版本之后加入的,是从1.6版中的_Deferred对象中抽离的,主要用来进行函数队列的add、remove、fire、lock等操作,并提供once、memory、unique、stopOnFalse四个option进行一些特殊的控制。

这个函数常见的应用场景是事件触发机制,也就是设计模式中的观察者模式的发布、订阅机制,目前Callbacks对象用于queue、ajax、Deferred对象中。
 

Ajax模块

  1. ajax: function(url, options) { 
  2.   //省略代码 
  3.   deferred = jQuery.Deferred(), 
  4.   completeDeferred = jQuery.Callbacks("once memory"
  5.     .............. 

不难发现jQuery.Callbacks还提供“once memory”等参数用来处理:

   ☑  once: 确保这个回调列表只执行( .fire() )一次(像一个递延 Deferred)。

   ☑  memory: 保持以前的值,将添加到这个列表的后面的最新的值立即执行调用任何回调 (像一个递延 Deferred)。

   ☑  unique: 确保一次只能添加一个回调(所以在列表中没有重复的回调)。

   ☑  stopOnFalse: 当一个回调返回false 时中断调用。

  1. var callbacks = $.Callbacks('once'); 
  2.  
  3. callbacks.add(function() { 
  4.   alert('a'); 
  5. }) 
  6.  
  7. callbacks.add(function() { 
  8.   alert('b'); 
  9. }) 
  10.  
  11. callbacks.fire(); //输出结果: 'a' 'b' 
  12. callbacks.fire(); //未执行 

once的作用是使callback队列只执行一次。
 


关于jQuery回调对象的内容写到这里就结束啦,您可以收藏本页网址http://www.alixixi.com/web/ a/2015080395214.shtml方便下次再访问哦。