亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery的deferred對象使用詳解

2019-11-20 08:53:29
字體:
來源:轉載
供稿:網友

之前看別人的demo,發現在延遲對象被resolve時要執行的代碼,有時會寫在deferred.then方法里執行,有時會寫在deferred.done方法里執行。

這讓對延遲對象一知半解的我非常困惑,今天抽時間研究了一下下,發現:在某種環境下,兩個方法的確能實現同樣的效果。
這種特定的環境是怎樣呢?

先看一下deferred.done的用法:

// 創建deferred對象var dtd = $.Deferred(); // 解決deferred對象dtd.resolve('finish');// 調用done方法dtd.done(doneCallback [, doneCallback])// 當deferred對象被 resolve 時,執行doneCallback函數// 參數可為一個函數、多個函數或函數數組// 返回原來的deferred或promise對象

再看下deferred.then的用法和特性:

// 創建deferred對象var dtd = $.Deferred(); // 解決deferred對象dtd.resolve('finish'); // 調用then方法deferred.then(doneFilter [, failFilter] [, progressFilter])// then方法特性:// 當deferred對象被resolve時,執行doneFilter函數// 當deferred對象被reject時,執行failFilter函數// 當dederred對象被progress時,執行progressFilter函數// 返回值:1,返回deferred的promise對象,可修改promise傳遞的值( 原來resolve,reject 的返回值為a,將a修改為b,返回b,該promise的done或fail收到的返回值變為b );// 返回值:2,在then方法內創建新的deferred對象并返回其promise// 返回的promise對象可以鏈接其他的延遲對象,如done,fail,then等// 多個then方法時,異步執行( one by one )// 該方法會過濾掉deferred修改狀態的方法,返回值deferred對象的promise 

根據以上兩個方法的特性,發現:

deferred.thendeferred.done方法都可以直接收一個參數函數,且第一個參數函數都是在deferred對象在resolve時被調用。

雖說then方法可改變返回值,但在不考慮返回值且只有一個參數函數的前提下,兩個方法的確可以實現一樣的效果。

相比之下,done方法更純粹吧,then方法會更復雜一些,但不能完全替代done方法,使用then方法的話,還是小心些的好。

附Deferred對象的其它方法:

// 創建延遲對象 <br>var dtd = $.Deferred();var state = dtd.state();// 返回deferred對象當前狀態,pending / resolved / rejected// 不接受任何參數deferred.always( alwaysCallback [, alwaysCallback] );// 當deferred對象被解決或拒絕時,都執行此方法// 參數可以是一個函數,或是一個函數數組dtd.promise( [obj] );// 目的: 防止其他代碼干涉其內部進度和狀態// 返回新的promise對象,包含可以執行的方法( done, fail, then, always, progress, state, promise ),// 不包含修改Deferred狀態的方法( resolve, reject, notify, resolveWith, rejectWith, nodifyWith )// 需返回deferred對象時,建議返回deferred.promise()dtd.resolve( [args] )// 解決deferred對象,調用所有doneCallback函數// doneCallback可通過then方法中第一個參數設置,也可通過dtd.done( doneCallback )添加// 參數將傳遞給doneCallback。參數可選// 只有deferred對象的創建者才可以調用的方法// doneCallback中this為deferred或promise對象// doneCallback只接收一個參數dtd.resolveWith( context [,args] )// 解決deferred對象,調用所有doneCallback函數// 參數:第一個參數為上下文即this對象,doneCallback的this將被修改;第二個參數為數組// doneCallback中this為調用resolveWith方法的上下文// doneCallback接收參數個數為該方法第二個參數數組的長度// 與resolve方法的區別在于,將改變doneCallback函數的this指向dtd.reject( [args] )// 拒絕deferred對象,調用所有failCallback函數// failCallback可通過then方法中第二個參數設置,也可通過dtd.fail( failCallback )添加// 參數將傳遞給failCallback。參數可選// 只有deferred對象的創建者才可以調用的方法// failCallback中this為deferred或promise對象// failCallback只接收一個參數dtd.rejectWith(context, [args] )// 解決deferred對象,調用所有failCallback函數// 參數:第一個參數為上下文即this對象,failCallback的this將被修改;第二個參數為數組// failCallback中this為調用rejectWith方法的上下文// failCallback接收參數個數為該方法第二個參數數組的長度// 與resolve方法的區別在于,將改變failCallback函數的this指向dtd.notify( [args] )// deferred進行處理時,調用所有的progressCallback函數// progressCallback可通過then方法中的第3個參數設置,也可以通過deferred.progress( progressCallback )添加// 通常此方法只能被deferred對象的創建者調用,可通過deferred.promise或then過濾此方法// 參數可不寫。若寫有參數,建議為字符串或可返回字符串的函數// 當deferred進入 resolved 或rejected狀態后,再調用notify方法,progressCallback將不再被執行dtd.notifyWith(context, [args] )// deferred進行處理時, 調用所有progressCallback函數// 參數:第一個參數為上下文即this對象,progressCallback的this將被修改;第二個參數為數組// progressCallback中this為調用rejectWith方法的上下文// progressCallback接收參數個數為該方法第二個參數數組的長度// 與resolve方法的區別在于,將改變progressCallback函數的this指向// 當deferred進入 resolved 或rejected狀態后,再調用notifyWith方法,progressCallback將不再被執行

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久av| 国产欧美一区二区| 亚洲精品永久免费| 91大神在线播放精品| 黄色精品在线看| 51午夜精品视频| 亚洲xxxx妇黄裸体| 国产精品视频xxx| 国产精品久久久久久久久男| 欧美亚洲另类在线| 国产精品欧美在线| 国产精品91久久久久久| 欧美中文字幕在线视频| 欧美一区二区三区免费观看| 中文字幕在线观看日韩| 欧美激情第一页xxx| 亚洲理论片在线观看| 91精品国产综合久久久久久久久| 欧美一级黑人aaaaaaa做受| 国产精品欧美在线| 亚洲第一色中文字幕| 国产精品专区第二| 亚洲成人三级在线| 色诱女教师一区二区三区| 成人午夜黄色影院| 亚洲人成人99网站| 久久久久久久久久婷婷| 欧美电影在线观看| 日韩成人在线观看| 国产在线视频一区| 伊人久久男人天堂| 亚洲综合在线中文字幕| 日韩av在线网址| 国产精品91久久| 欧洲中文字幕国产精品| 久久精品国产精品亚洲| 久久色免费在线视频| 国产一区二区三区日韩欧美| 国产精品久久久久久超碰| 国产精品7m视频| 国产精品羞羞答答| 日产精品99久久久久久| 成人在线免费观看视视频| 欧美专区在线视频| 欧美成人全部免费| 日本三级久久久| 国产精品久久久久久久久影视| 亚洲男人天堂九九视频| 欧美激情乱人伦一区| 亚洲午夜av久久乱码| 精品亚洲精品福利线在观看| 欧美成人一区二区三区电影| 色天天综合狠狠色| 亚洲人成电影网站色www| 亚洲欧美综合图区| 高清一区二区三区四区五区| 久久综合伊人77777| 国产精品夜间视频香蕉| 日韩免费看的电影电视剧大全| 亲爱的老师9免费观看全集电视剧| 成人国产精品日本在线| 欧美中文字幕在线播放| 色综合伊人色综合网| 国产精品91视频| 日韩在线视频线视频免费网站| 日韩av一区在线| 69久久夜色精品国产69| xvideos成人免费中文版| 亚洲va久久久噜噜噜| 国语自产精品视频在线看一大j8| 亚洲另类xxxx| 黄色成人av网| 国产综合在线视频| 狠狠爱在线视频一区| 久久精品成人欧美大片古装| 欧美成人高清视频| 国产精品免费一区豆花| 久久久国产一区二区三区| 久久精品99久久香蕉国产色戒| 亚洲女人天堂视频| 成人免费网站在线观看| 国产精品青青在线观看爽香蕉| 国产第一区电影| 成人久久一区二区三区| 精品亚洲va在线va天堂资源站| 韩剧1988在线观看免费完整版| 国产精品三级网站| 日韩色av导航| 国产精品久久在线观看| 成人欧美一区二区三区在线| 久久久精品日本| 欧美大秀在线观看| 亚洲人成免费电影| 国产日韩欧美自拍| 国产精品直播网红| 欧美大全免费观看电视剧大泉洋| 久久精品视频一| 久久久久亚洲精品国产| 色综久久综合桃花网| 成人国产精品久久久久久亚洲| 国产精品视频yy9099| 91视频国产高清| 国产精品视频在线观看| 国产精品成人久久久久| 456亚洲影院| 97精品国产91久久久久久| 日韩亚洲第一页| 精品国内自产拍在线观看| 中文字幕日韩在线观看| 少妇久久久久久| 国产精品久久久久久久电影| 欧美日韩免费在线观看| 久久精品成人欧美大片古装| 国产亚洲精品91在线| 亚洲国产精品成人av| 亚洲天堂av电影| 亚洲人午夜精品免费| 色噜噜狠狠狠综合曰曰曰| 久久久精品一区二区三区| 在线观看欧美日韩国产| 国产精品青草久久久久福利99| 国产欧美精品在线播放| 日韩中文字幕视频在线| 亚洲精品二三区| 精品中文字幕乱| 国产男女猛烈无遮挡91| 97成人精品视频在线观看| 国产精品亚洲美女av网站| 欧美噜噜久久久xxx| 日韩人体视频一二区| 欧美日韩成人在线视频| 日韩在线视频免费观看| 91免费人成网站在线观看18| 91综合免费在线| 色哟哟网站入口亚洲精品| 日韩国产高清污视频在线观看| 国产成人精彩在线视频九色| 奇米影视亚洲狠狠色| 91成人免费观看网站| 欧美日韩国产一中文字不卡| 欧美国产一区二区三区| 亚洲精品456在线播放狼人| 中文字幕精品久久久久| 亚洲激情视频网| 欧美亚洲国产日韩2020| 国产婷婷97碰碰久久人人蜜臀| 97视频在线观看免费高清完整版在线观看| 欧美夫妻性生活视频| 97精品一区二区三区| 日韩亚洲综合在线| 日韩亚洲一区二区| 日韩亚洲精品视频| 97在线观看免费| 日韩在线观看高清| 日韩电影大片中文字幕| 色综合久久久久久中文网| 高清欧美电影在线| 国产精品尤物福利片在线观看| 欧美www在线| 7777精品视频| 欧美乱人伦中文字幕在线| 欧美日韩国产黄| 亚洲女人天堂成人av在线| 红桃av永久久久|