摘要:不就是鏈式調用嘛,有何優(yōu)點優(yōu)點一可以清晰指定多個回調函數(shù)試想一下,如果用以前的編程模式,只能這么寫優(yōu)點二為多個操作指定回調函數(shù)用傳統(tǒng)的編程模式,只能重復寫等回調了。
在開發(fā)的過程,經(jīng)常會遇到一些耗時間的操作,比如ajax讀取服務器數(shù)據(jù)(異步操作),遍歷一個很大的數(shù)組(同步操作)。不管是異步操作,還是同步操作,總之就是不能立即得到結果,JS是單線程語音,不能立即得到結果,便會一直等待(阻塞)。
一般的做法就是用回調函數(shù)(callback),即事先定義好一個函數(shù),JS引擎不等待這些耗時的操作,而是繼續(xù)執(zhí)行下面的代碼,等這些耗時操作結束后,回來執(zhí)行事先定義好的那個函數(shù)。如下面的ajax代碼:
$.ajax({ url: "test.html", success: function(){ console.log("success"); }, error: function(){ console.log("error"); } });
但這樣寫不夠強大靈活,也很啰嗦。為此,jQuery1.5版本引入Deferred功能,為處理事件回調提供了更加強大而靈活的編程模式。
$.ajax("test.html") .done( function(){ console.log("success"); } ) .fail( function(){ console.log("error"); } );
不就是鏈式調用嘛,有何優(yōu)點?
優(yōu)點一:可以清晰指定多個回調函數(shù)
function fnA(){...} function fnB(){...} $.ajax("test.html").done(fnA).done(fnB);
試想一下,如果用以前的編程模式,只能這么寫:
function fnA(){...} function fnB(){...} $.ajax({ url: "test.html", success: function(){ fnA(); fnB(); } });
優(yōu)點二:為多個操作指定回調函數(shù)
$.when($.ajax("test1.html"), $.ajax("test2.html")) .done(function(){console.log("success");}) .fail(function(){console.log("error");});
用傳統(tǒng)的編程模式,只能重復寫success,error等回調了。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/78248.html
摘要:中文文檔簡單說,對象就是的回調函數(shù)解決方案。為了讓回調函數(shù)的名字統(tǒng)一,便于在中使用。普通操作的回調函數(shù)接口對象的最大優(yōu)點,就是它把這一套回調函數(shù)接口,從操作擴展到了所有操作。指定操作成功時的回調函數(shù)。 參考鏈接 jQuery API中文文檔 jQuery.Deferred jQuery.when jQuery的deferred對象詳解 jQuery deferred 對象的 prom...
摘要:上篇文章中講到,使用的方法操作請求,會受到回調函數(shù)嵌套的問題。第一次回調第二次回調內(nèi)部實現(xiàn)上,和都是基于實現(xiàn)的對于多個同時請求,共同執(zhí)行同一個回調函數(shù)這一點上,有一個方法,接受多個對象實例,同時執(zhí)行。 上篇文章中講到,使用jquery的ajax方法操作ajax請求,會受到回調函數(shù)嵌套的問題。當然,jquery團隊也發(fā)現(xiàn)了這個問題,在2011年,也就是jquery 1.5版本之后,jQu...
摘要:通常的做法是,為它們指定回調函數(shù)。簡單說,對象就是的回調函數(shù)解決方案。指定操作成功時的回調函數(shù)指定操作失敗時的回調函數(shù)沒有參數(shù)時,返回一個新的對象,該對象的運行狀態(tài)無法被改變接受參數(shù)時,作用為在參數(shù)對象上部署接口。 轉自:阮一峰:http://www.ruanyifeng.com/blo... 一、什么是deferred對象?開發(fā)網(wǎng)站的過程中,我們經(jīng)常遇到某些耗時很長的javascri...
摘要:通常的做法是,為它們指定回調函數(shù)。指定操作成功時的回調函數(shù)指定操作失敗時的回調函數(shù)沒有參數(shù)時,返回一個新的對象,該對象的運行狀態(tài)無法被改變接受參數(shù)時,作用為在參數(shù)對象上部署接口。 jQuery的開發(fā)速度很快,幾乎每半年一個大版本,每兩個月一個小版本。 每個版本都會引入一些新功能。今天我想介紹的,就是從jQuery 1.5.0版本開始引入的一個新功能----deferred對象。 這個功...
摘要:給普通的操作指定回調函數(shù)對象的最大優(yōu)點,就是它把這一套回調函數(shù)接口,從操作擴展到了所有操作。方法用于指定對象狀態(tài)為已失敗時的回調函數(shù)。執(zhí)行完畢執(zhí)行成功執(zhí)行失敗接收一個或多個對象作為參數(shù),為其指定回調函數(shù)。 什么是deferred對象 開發(fā)網(wǎng)站的過程中,我們經(jīng)常遇到某些耗時很長的javascript操作。其中,既有異步的操作(比如ajax讀取服務器數(shù)據(jù)),也有同步的操作(比如遍歷一個大型...
閱讀 1454·2021-09-22 15:43
閱讀 2168·2019-08-30 15:54
閱讀 1168·2019-08-30 10:51
閱讀 2094·2019-08-29 18:35
閱讀 437·2019-08-26 11:58
閱讀 2487·2019-08-26 11:38
閱讀 2447·2019-08-23 18:35
閱讀 3644·2019-08-23 18:33