国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

jQuery中的deferred對象和extend方法詳解

2024-05-06 15:17:30
字體:
來源:轉載
供稿:網友

1 deferred對象

deferred對象是jQuery的回調函數解決方案,它是從jQuery1.5.0版本開始引入的功能

deferred對象的方法

(1) $.Deferred() 生成一個deferred對象。

(2) deferred.done() 指定操作成功時的回調函數

(3) deferred.fail() 指定操作失敗時的回調函數

(4) deferred.promise() 沒有參數時,返回一個新的deferred對象,該對象的運行狀態無法被改變;接受參數時,作用為在參數對象上部署deferred接口。

(5) deferred.resolve() 手動改變deferred對象的運行狀態為"已完成",從而立即觸發done()方法。

(6)deferred.reject() 這個方法與deferred.resolve()正好相反,調用后將deferred對象的運行狀態變為"已失敗",從而立即觸發fail()方法

(7) $.when() 為多個操作指定回調函數。

除了這些方法以外,deferred對象還有二個重要方法,上面的教程中沒有涉及到。

(8)deferred.then()

有時為了省事,可以把done()和fail()合在一起寫,這就是then()方法。

  $.when($.ajax( "/main.php" ))  .then(successFunc, failureFunc );

如果then()有兩個參數,那么第一個參數是done()方法的回調函數,第二個參數是fail()方法的回調方法。如果then()只有一個參數,那么等同于done()。

(9)deferred.always()

這個方法也是用來指定回調函數的,它的作用是,不管調用的是deferred.resolve()還是deferred.reject(),最后總是執行。

$.ajax( "test.html" ).always( function() { alert("已執行!");} );

來點兒

1)ajax操作的鏈式寫法

先回顧一下jQuery的ajax操作的傳統寫法:

$.ajax({    url: "test.html",    success: function(){      alert("哈哈,成功了!");    },    error:function(){      alert("出錯啦!");    }  });

在上面的代碼中,$.ajax()接受一個對象參數,這個對象包含兩個方法:success方法指定操作成功后的回調函數,error方法指定操作失敗后的回調函數。

$.ajax()操作完成后,如果使用的是低于1.5.0版本的jQuery,返回的是XHR對象,你沒法進行鏈式操作;如果高于1.5.0版本,返回的是deferred對象,可以進行鏈式操作。

有了deferred對象之后,可以這樣寫了

$.ajax("test.html")  .done(function(){ alert("哈哈,成功了!"); })  .fail(function(){ alert("出錯啦!"); });

上面代碼中的done()相當于success方法,fail()相當于error方法。采用鏈式寫法以后,代碼的可讀性大大提高。

2)指定同一操作的多個回調函數

deferred對象的一大好處,就是它允許你自由添加多個回調函數。

還是以上面的代碼為例,如果ajax操作成功后,除了原來的回調函數,我還想再運行一個回調函數,怎么辦?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 嘉荫县| 扎鲁特旗| 定结县| 广灵县| 正蓝旗| 南郑县| 高唐县| 邹平县| 柏乡县| 理塘县| 洪泽县| 盖州市| 壤塘县| 外汇| 同江市| 遂平县| 民乐县| 营口市| 天峻县| 阿拉尔市| 九江县| 忻城县| 桦南县| 万宁市| 蛟河市| 阿克苏市| 乌兰浩特市| 夏邑县| 河东区| 平昌县| 西丰县| 内黄县| 游戏| 韩城市| 屯昌县| 洞口县| 佛冈县| 临海市| 湖口县| 宜宾县| 阳泉市|