四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

jQuery1.5的改進細(xì)節(jié)

  jQuery 1.5 beta1出來了,從學(xué)習(xí)跟進上來說,這一次已經(jīng)比較晚了(我竟然不知道1.5什么時候出的alpha,就這么beta了)。

  這個1.5版本最大的更新是AJAX的完全重寫,提供了更強的可擴展性。但是受制于精力和篇幅,對新的AJAX的分析還是放到下回,本篇先簡單介紹一下細(xì)節(jié)方面的改進。

  jQuery._Deferred和jQuery.Deferred

  首先不得不說這兩個新生事物,因為他們是作為基礎(chǔ)設(shè)施存在,不把這兩個東西講明白了,有些問題根本沒辦法解釋。

  首先,jQuery.Deferred是jQuery._Deferred的增強版,因此對于這個問題,從jQuery._Deferred入手,就能說明一大半的問題。

  什么是Deferred?從字面上看,我的第一反應(yīng)是延遲加載,首字母大寫的應(yīng)該是類型的定義,所以這大概是一個透明提供延遲加載功能的類型吧。然而實際上,雖然確實帶有那么一點點延遲的意思,這個東西卻不是用來實現(xiàn)延遲加載的。

  簡單來說,jQuery._Deferred是一個函數(shù)隊列,他的作用有以下幾點:

  • 保存若干個函數(shù)。
  • 在特定的時刻把保存著的函數(shù)全部執(zhí)行掉。
  • 執(zhí)行過后,新進來的函數(shù)會立刻執(zhí)行。

  感覺是不是和啥東西很像?對,jQuery的ready函數(shù)就是這樣的邏輯,實際中jQuery 1.5中的ready函數(shù)也確實被嫁接到這上面去了。

  jQuery._Deferred提供下面的接口:

  • done:function(fn1, fn2, …)的形式,用于把函數(shù)添加到隊列中。
  • fire:function(context, args)的形式,使用context指定this對象,args指定參數(shù),調(diào)用隊列中所有函數(shù)。fire被調(diào)用后,_Deferred會進入isResolved狀態(tài),未來對done的調(diào)用不會再保存函數(shù),而是直接調(diào)用函數(shù)。
  • resolve:相當(dāng)于調(diào)用fire(this, arguments),一個簡化的方法。
  • isResolved:用來判斷_Deferred是否在isResolved狀態(tài),具體參考前面的fire函數(shù)的解釋。
  • cancel:取消掉整個隊列,這樣不管未來是不是fire,隊列中的函數(shù)都不會再被調(diào)用。

  說明白了jQuery._Deferred,再來看看jQuery.Deferred。這個東西其實就是2個_Deferred組成的,第一個稱為deferred,用于保管正常狀態(tài)下的函數(shù);第二個稱為failDeferred,用于保管出錯狀態(tài)下的函數(shù)。同時jQuery.Deferred提供了一些新的接口:

  • then:function(done, fail)的形式,把done添加進deferred,把fail添加進failedDeferred。
  • fail:相當(dāng)于failDeferred的done函數(shù)。
  • fireReject:相當(dāng)于failDeferred的fire函數(shù)。
  • reject:相當(dāng)于failDeferred的resolve函數(shù)。
  • isRejected:相當(dāng)于failDeferred的isResolved函數(shù)。

  同時jQuery.Deferred取消了cancel函數(shù)。

  那么這個是啥用的呢?有正常和出錯2個狀態(tài),同時又是異步的,很容易就能想到……對,給AJAX用的,在下一篇分析中再詳細(xì)說明。

  jQuery.ready的變化

  因為有了jQuery._Deferred這個東西,jQuery.ready函數(shù)變成依賴于函數(shù)隊列,具體的變化有:

  原來的readyList變量已經(jīng)不再是一個數(shù)組,而變成了jQuery._Deferred對象。

  原本在DOMContentLoaded時,調(diào)用readList中所有函數(shù)的邏輯,現(xiàn)在也使用了jQuery._Deferred中,原來的代碼:

while ( (fn = ready[ i++ ]) ) {
fn.call( document, jQuery );
}

it知識庫jQuery1.5的改進細(xì)節(jié),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 野孩子美剧| (一等奖)班主任经验交流ppt课件 傅青主治闭经特效方 | 性视频播放| 日本大片网址| 保镖1993| 狂野殴美激情性bbbbbb| 情动电影| 电影《donselya》在线观看| 黑凤凰电视剧剧情介绍| 美少女战士奥特曼| 摘抄现代诗| 你迷上我 电视剧| 家族荣誉4| 红灯区 电影| 体现汉字的歇后语| 美足av电影欧美日韩| 花守由美里| 违规吃喝研讨发言材料| 极品美女在线| 熊汝霖| 恶搞一家人| 爱在西元前简谱| 床上黄色片| 龙的心电影完整版国语| 《保姆妈妈》电视剧| 日本大片ppt免费ppt电影| 马德哈万| 李道新| 林正英复仇电影| 在线播放啄木乌丝袜秘书| 抖音火山版| cctv5+体育直播节目表| 桥梁工程施工方案| 亚洲春黄| 狂野殴美激情性bbbbbb| remember11| 星条红与蓝皇室| 美妙天堂第三季| 八年级上册英语课堂作业答案| 金太狼的幸福生活演员表_| 45分钟见奶薄纱透明时装秀|