看了一下队列剩下的几个方法,在没有应用场景的情况下,对它所做的一些处理不能明白。后续希望可以通过动画部分代码的阅读能搞清楚这些处理的意义。
jQuery.fn.extend({

// 推迟队列中函数的执行

delay: function( time, type ) {
  // 估计需要看了动画部分的代码才能知道是怎么回事
  time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
  type = type || "fx";
  // 推一个匿名函数到栈中,该函数通过setTimeout延迟特定的函数执行。
  return this.queue( type, function( next, hooks ) {
    var timeout = setTimeout( next, time );
    // 给hooks绑定一个stop方法,目的是特定情况下清楚延时?
    hooks.stop = function() {
      clearTimeout( timeout );
    };
  });
},
// 将空数组推入到栈中,内部通过调用cache机制的access方法用空数组替换掉原本的数组队列内容
clearQueue: function( type ) {
  return this.queue( type || "fx", [] );
},
// 该方法通过调用回调机制来完成对队列内函数执行完成之后的回调
promise: function( type, obj ) {
  var tmp,
  count = 1,

  // 得到一个Deferred对象
  defer = jQuery.Deferred(),
  elements = this,
  i = this.length,

  resolve = function() {
    if ( !( --count ) ) {

      // 将回调的触发环境传进去
      defer.resolveWith( elements, [ elements ] );
    }
  };

  // 参数调整

  if ( typeof type !== "string" ) {
    obj = type;
    type = undefined;
  }
  type = type || "fx";

  while( i-- ) {

    // 等到队列为空时,标记为resolve,说明队列执行完毕,可以准备执行回调。
    tmp = data_priv.get( elements[ i ], type + "queueHooks" );
    if ( tmp && tmp.empty ) {
      count++;
      tmp.empty.add( resolve );
    }
  }
  resolve();

  // 返回promise对象,用户其它地方的监控
  return defer.promise( obj );
  }
});

jQuery队列(三)的更多相关文章

  1. jQuery的三种写法

    jQuery的三种写法 jQuery一共有三种写法,写法如下: <script type="text/javascript" src="js/jquery-1.9. ...

  2. js进阶 13-5 jquery队列动画如何实现

    js进阶 13-5 jquery队列动画如何实现 一.总结 一句话总结:同一个jquery对象,直接写多个animate()就好. 1.什么是队列动画? 比如说先左再下,而不是左下一起走 2.怎么实现 ...

  3. SDUT-2133_数据结构实验之栈与队列三:后缀式求值

    数据结构实验之栈与队列三:后缀式求值 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 对于一个基于二元运算符的后缀表示式 ...

  4. jQuery队列操作

    jQuery.queue 1."fx"是什么? 队列动画的默认名称 队列的名字为type + "queue",默认是"fxqueue" 2. ...

  5. jQuery队列(一)

    jQuery的队列依赖缓存机制事件,它同时是animate的基础. 它不像事件机制.缓存机制.回调机制一样有自己的命名空间,由于比较简单,所以直接挂在到$和jQuery对象上. 它提供的基础方法有: ...

  6. jquery源码解析:jQuery队列操作queue方法实现的原理

    我们先来看一下jQuery中有关队列操作的方法集: 从上图可以看出,既有静态方法,又有实例方法.queue方法,相当于数组中的push操作.dequeue相当于数组的shift操作.举个例子: fun ...

  7. jQuery 的三种获取值的方式

    本节内容主要介绍的是如何使用jQuery中的.html(),.text()和.val()三种方法,用于读取,修改元素的html结构,元素的文本内容,以及表单元素的value值的方法.jQuery中为我 ...

  8. ActiveMQ_Topic队列(三)

    一.本文章包含的内容 1.列举了ActiveMQ中通过Topic方式发送.消费队列的代码(监听者有两个,分别是topicMessageListener1.topicMessageListener2) ...

  9. Jquery 学习三

    一.each语句 1.each语句的功能 在jQuery中,通过$函数获取的都是jQuery对象.通过测试可知,jQuery对象是一个类数组的特殊对象,其是DOM对象的集合.而each语句就是专门用于 ...

随机推荐

  1. QTreeView

    隐藏左侧的小箭头

  2. C#实现windows服务安装,服务名可配置时出问题(无法创建 ProjectInstaller 安装程序类型的实例)

    [参考资料]Windows 安装服务 的两种方式 一.问题出在System.Configuration.ConfigurationManager.AppSettings[""].T ...

  3. HTML5 touche vents drag to move & AF actionsheet by longTap

    $('img').on("touchstart",function(E){ //E.preventDefault();E.stopPropagation(); var el=thi ...

  4. 条理清晰的搭建SSH环境之整合Hibernate和Spring

    上篇博客整合了Struts和Spring,感觉很简单,这篇博客主要讲述Hibernate和Spring的整合. 如果说上篇博客中的整合是以为Spring的IOC可以管理对象,让Struts2里的对象管 ...

  5. vuex在页面中以对象展开运算符形式引入报错解决

    当页面中以mapGetters等对象扩展运算符写的时候,会报错 unexpected token 解决如下: babel还要加插件才能解释这个写法 npm install --save-dev bab ...

  6. 在Unity3d中调用外部程序及批处理文件

    如果调用外部普通应用程序, 比如notepad.exe 这样调用 static public bool ExecuteProgram(string exeFilename, string workDi ...

  7. perforce变量配置与使用

    linux Perforce 使用 1.配置环境变量: 下载  perforce    放到/usr/bin/下 export P4PORT=192.168.4.88:1666 #P4所在的主机exp ...

  8. 哪些因素影响ABBYY FineReader 12的识别质量

    任何一款OCR文字识别软件都无法确保100%识别准确,更何况诸多因素的存在,都有可能直接或间接影响识别质量.在使用ABBYY FineReader 12识别或者转换文档的时候也存在同样的状况,今天来给 ...

  9. QT基础:QMainWindow学习小结

    简述 普通的桌面应用程序有个共同的特性,有菜单栏.工具栏.状态栏.中央窗口等部件.菜单栏其实可以看成是一个窗口,菜单栏中的每一个菜单也可以看成一个窗口,每个部件基本都可以认为是一个窗口.那么这些典型的 ...

  10. PHP对HTML代码尸体编码2个函数

    1.htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体. 2.htmlentities() 函数把字符转换为 HTML 实体. 记录下