章节
问答
课签
笔记
评论
占位
占位

队列操作

jQuery 中有一个 Queue 队列的接口,这个模块没有单独拿出来作为一个章节是因为这个是内部专门为动画服务的。Queue 队列如同 data 数据缓存与 Deferred 异步模型一样,都是 jQuery 库的内部实现的基础设施。

Queue队列

队列是一种特殊的线性表,只允许在表的前端(队头)进行删除操作(出队),在表的后端(队尾)进行插入操作(入队)。队列的特点是先进先出(FIFO-first in first out),即最先插入的元素最先被删除。

为什么要引入队列?

我们知道代码的执行流有异步与同步之分,例如:

var a = 1;
setTimeout(function(){
    a = 2;
},0)
alert(a) //1

我们一直习惯于“线性”地编写代码逻辑,但是在 JavaScript 编程几乎总是伴随着异步操作:

setTimeout、CSS3Transition/Animation、ajax、dom 的绘制、postmessage、Web Database 等等,大量异步操作所带来的回调函数会把我们的算法分解地支离破碎,之前我们说过对于“异步+回调”的模式,怎么“拉平”异步操作使之跟同步一样,因为异步操作进行流程控制的时候无非避免的要嵌套大量的回调逻辑,所以就会出现 promises 约定了。

那么 jQuery 引入队列其实从一个角度上可以认为:允许一系列函数被异步地调用而不会阻塞程序

看一个代码段:

$("#Aaron").slideUp().fadeIn()

这是 jQuery 的一组动画链式序列,它的内部其实就是一组队列 Queue,所以队列和 Deferred 地位类似,是一个内部使用的基础设施。

  • 当 slideUp 运行时,fadeIn 被放到 fx 队列中
  • 当 slideUp 完成后,从队列中被取出运行

Queue 函数允许直接操作这个链式调用的行为,同时 Queue 可以指定队列名称获得其他能力而不局限于 fx 队列。

jQuery 提供了 2 组队列操作的 API:

jQuery.queue/dequeue
jQuery.fn.queue/dequeue

但是不同与普通队列定义的是:

  • jQuery.queue 和 jQuery.fn.queue 不仅执行出队操作返回队头元素,还会自动执行返回的队头元素
  • fn 是扩展在原型上的高级API是提供给实例使用的
  • .queue/.dequeue 其内部是调用的 .queue,.dequeue 静态的底层方法实现入列与出列

任务

?不会了怎么办
||

提问题

写笔记

截图
提交
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

举报

0/150
提交
取消
全部 精华 我要发布
全部 我要发布
最新 点赞
只看我的

手记推荐

更多

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?