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