欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery中的Deferred和promise 的區(qū)別

 更新時間:2016年04月03日 12:50:54   作者:好JSER  
這篇文章主要介紹了jQuery中的Deferred和promise 的區(qū)別的相關資料,需要的朋友可以參考下

Deferred和Promise之間有什么區(qū)別呢?

promise

一個promise就是一個由 異步函數(shù)返回的對象 。當你想要自己編寫一個這樣的函數(shù)時你需要使用一個deferred。

var promise = $.ajax({
url: "/myServerScript"
});
promise.done(mySuccessFunction); 
promise.fail(myErrorFunction); 
var promise = $.ajax({
url: "/myServerScript"
}); 
promise.then(mySuccessFunction,myErrorFunction); 

使用Promises的好處有以下幾點:

你可以多次調用done()和fail()函數(shù),并使用不同的回調函數(shù)。或許你的一個回調函數(shù)用來停止動畫,一個用來發(fā)起一個新的AJAX請求,一個用來將接受到的數(shù)據(jù)展示給用戶。

var promise = $.ajax({ url: "/myServerScript" });
promise.done(myStopAnimationFunction); promise.done(myOtherAjaxFunction); 
promise.done(myShowInfoFunction); promise.fail(myErrorFunction);

即使在AJAX調用完成之后,你依然可以調用done()和fail()函數(shù),并且回調函數(shù)可以立即執(zhí)行。不同的狀態(tài)之間并不會發(fā)生變量混亂。當一個AJAX調用結束時,它保持了一個成功狀態(tài)或者失敗狀態(tài),這個狀態(tài)不會發(fā)生改變。

你可以合并promises。有時你需要同時進行兩個AJAX請求并且想要在兩個AJAX請求都成功時調用一個函數(shù)。為了完成這個任務,你需要使用一個新的$.when()函數(shù):

var promise1 = $.ajax("/myServerScript1"); 
var promise2 = $.ajax("/myServerScript2");
$.when(promise1, promise2).done(function(xhrObject1, xhrObject2) { // 處理兩個XHR對象 });

deferred

簡單說,deferred對象就是jQuery的回調函數(shù)解決方案。在英語中,defer的意思是”延遲”,所以deferred對象的含義就是”延遲”到未來某個點再執(zhí)行。

一個 deferred對象 能做的和一個promise對象差不多,但是它有兩個函數(shù)來觸發(fā) done()和fail()函數(shù) 。

一個deferred對象擁有一個resolve()函數(shù)來處理一個成功的結果并執(zhí)行與done()相關的函數(shù)。reject()函數(shù)則用來處理失敗的結果并執(zhí)行與fail()相關的函數(shù)。

你可以給resolve()和reject()函數(shù)都提供參數(shù),然后它們都將傳遞給與done()和fail()相關的回調函數(shù)。

總結

jQuery 的ajax 就是返回一個promise 對象,里面含有done(), fail()方法; deferred 就是實現(xiàn)返回這個promise 對象的過程。

相關文章

  • Jquery常用技巧收集整理篇

    Jquery常用技巧收集整理篇

    jQuery 1.4給開發(fā)者帶來了很多值得興奮的新特性,同時使用jQuery的人也越來越多,為了方便大家對jQuery的使用,下面列出了一些jQuery使用技巧。
    2010-11-11
  • JQuery.validationEngine表單驗證插件(推薦)

    JQuery.validationEngine表單驗證插件(推薦)

    這篇文章主要介紹了JQuery.validationEngine表單驗證插件(推薦)的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • EasyUI創(chuàng)建對話框的兩種方式

    EasyUI創(chuàng)建對話框的兩種方式

    對話框(Dialog)是一個特殊的窗口(window),可以包含在頂部的工具欄和在底部的按鈕。接下來通過本文給大家介紹easyui創(chuàng)建對話框的兩種方式,非常不錯,感興趣的朋友一起看下吧
    2016-08-08
  • 詳談jQuery中的一些正則匹配表達式

    詳談jQuery中的一些正則匹配表達式

    下面小編就為大家?guī)硪黄斦刯Query中的一些正則匹配表達式。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • jquery實現(xiàn)自適應banner焦點圖

    jquery實現(xiàn)自適應banner焦點圖

    本文主要分享了jquery實現(xiàn)自適應banner焦點圖的示例代碼,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • jQuery$命名沖突怎么辦如何解決

    jQuery$命名沖突怎么辦如何解決

    某些框架也使用 $ 符號作為簡寫(就像 jQuery),如果您在用的兩種不同的框架正在使用相同的簡寫符號,有可能導致腳本停止運行,下面有個不錯的解決方法
    2014-01-01
  • jquery獲取css的color值返回RGB的方法

    jquery獲取css的color值返回RGB的方法

    這篇文章主要介紹了jquery獲取css的color值返回RGB的方法,涉及jQuery字符串正則運算與數(shù)值轉換的相關技巧,需要的朋友可以參考下
    2015-12-12
  • jquery阻止冒泡事件使用模擬事件

    jquery阻止冒泡事件使用模擬事件

    當點擊span的時候div和body的事件全部觸發(fā)了。要阻止這種發(fā)生并使用模擬事件。具體實現(xiàn)如下,感興趣的朋友可以參考下
    2013-09-09
  • jQuery獲取table行數(shù)并輸出單元格內容的實現(xiàn)方法

    jQuery獲取table行數(shù)并輸出單元格內容的實現(xiàn)方法

    這篇文章主要介紹了jQuery獲取table行數(shù)并輸出單元格內容的實現(xiàn)方法,涉及jQuery針對表格與頁面元素的動態(tài)操作技巧,需要的朋友可以參考下
    2016-06-06
  • jquery+css實現(xiàn)動感的圖片切換效果

    jquery+css實現(xiàn)動感的圖片切換效果

    這篇文章主要介紹了jquery+css實現(xiàn)動感的圖片切換效果,效果實現(xiàn)很精致,動畫簡潔大方,推薦給大家,感興趣的小伙伴們可以參考一下
    2015-11-11

最新評論