jQuery:在一個回調中處理多個請求

來源:互聯網
上載者:User

標籤:style   c   class   blog   java   tar   

我曾經為Mozilla Developer Network 開發一個新功能,它需要載入一個基本的指令檔的同時載入一個JSON請求。因為我們使用的是jQuery,意味著要使用 jQuery.getScript和jQuery.getJSON。我知道這兩者都是非同步並返回一個Deferred(jQuery中的Promise模式實現, 參見: deffered object)對象,因此我想知道能不能在一個回調裡按順序請求它們,就像多數的JavaScript載入器那樣(如curljs )。我很幸運,使用jQuery就可以用一個回調處理兩個請求。

  jQuery的JavaScript代碼

  就像我剛才提到的,我需要載入一個指令碼和一個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"    // 好了,東西都載入好了,可以幹活了});

  當資源檔載入完時,done或者callback就會被觸發,我就知道已經請求完了。每一個請求都返回了不同的回調參數,如上面的返回參數就像這樣:

// [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請求,就像擷取一個HTML模板,我們可以這樣:

$.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也在與時俱進。

  原文 davidwalsh.name

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.