使用jQuery中的when實現多個AJAX請求對應單個回調的例子分享_jquery

來源:互聯網
上載者:User

 我知道這些函數都是非同步執行(asyncronously)並且會延遲一段時間返回,所以我想知道是否有一種方式,使我可以使用單個回調,並行地載入它們,就像JS載入器 curljs 所做的那樣。 很幸運! 通過jQuery.when, 我可以並發地載入兩個請求,只執行一次回調!

jQuery 指令碼
正如我提到的,下面是載入指令碼和一個JSON資源的用例:

複製代碼 代碼如下:

$.when(
 $.getScript('/media/js/wiki-min.js?build=21eb633'),
 $.getJSON('https://developer.mozilla.org/en-US/demos/feeds/json/featured/')
).then(function(a, b) {  // 或者也可以使用 ".done"
 // Yay, 載入完成,此處我們可以執行一些依賴操作。。。
});

當資源載入完成, 指定的 done 或者 then 回調會觸發,因此可以知道請求已經完成。 每個請求返回的回調參數物件類型不同,因此上述請求可能返回如下資訊:

複製代碼 代碼如下:

// 格式: [response, state, jqxhr], [response, state, jqxhr]
["(function(c){var e=c(".from-search-navigate");if(e…;if(j){g.apply(m,l)}}}})(window,document,jQuery);", "success", Object]
[Array[15], "success", Object]

如果還需要增加一個傳統的AJAX XHR請求,比如說一個小組件模板,我們可以這樣做:

複製代碼 代碼如下:

$.when(
 $.getScript('/media/js/wiki-min.js?build=21eb633'),
 $.getJSON('https://developer.mozilla.org/en-US/demos/feeds/json/featured/'),
 $.get('/')
).then(function(a, b, c) {
 console.log(a, b, c);
});

Dojo Toolkit很早就有此類功能了,但jQuery也可以這麼做我還是相當振奮的。 對於現在的開發,多個不同步且返回先後順序也不確定的請求共用同一個回調是很自然的需求,所以jQuery絕對是與時俱進的!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.