亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

章節
問答
課簽
筆記
評論
占位
占位

隊列操作

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 靜態的底層方法實現入列與出列

任務

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

  • · 粉絲專屬優惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?