jQuery:在一個回撥中處理多個請求
我曾經為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也在與時俱進。
相關文章
- 多執行緒應用–Http請求阻塞回撥處理執行緒HTTP
- 多執行緒應用--Http請求阻塞回撥處理執行緒HTTP
- 一個請求在Struts2框架中的處理流程框架
- nginx 如何處理一個請求Nginx
- Node.js如何處理多個請求?Node.js
- AngularJS中的$http快取以及處理多個$http請求AngularJSHTTP快取
- JQuery使用deferreds序列多個ajax請求jQuery
- Spring MVC 處理一個請求的流程分析SpringMVC
- 淺談如何在專案中處理頁面中的多個網路請求
- java 介面回撥經典案例--網路請求回撥Java
- 多個請求統一更新介面
- Angular 記錄 - Rxjs 完整處理一個 Http 請求AngularJSHTTP
- 微信網頁授權登入回撥多個二級域名站的處理方法網頁
- Dialog 的一些回撥處理
- ajax中回撥的幾個坑
- WebApi在MVC 4中一個Controll多個post方法報錯處理WebAPIMVC
- AngularJS中處理多個promiseAngularJSPromise
- Laravel 路由匹配多個請求Laravel路由
- 在 Laravel 中處理請求驗證的智慧方法Laravel
- jQuery能夠為一個元素註冊多個相同事件處理函式jQuery事件函式
- linux如何處理多連線請求?Linux
- 執行緒安全-一個VC下多個網路請求執行緒
- 如何用Golang處理每分鐘100萬個請求Golang
- 使用Go語言每分鐘處理一百萬個請求Go
- Promise中多個回撥函式之間的資料傳遞Promise函式
- 通過重建Hosting系統理解HTTP請求在ASP.NET Core管道中的處理流程[中]:管道如何處理請求...HTTPASP.NET
- 微信小程式學習總結02:封裝api請求(處理非同步api回撥地獄的一種方案)微信小程式封裝API非同步
- 請求資料處理
- wordpress 處理 ajax 請求
- Mongodb請求處理流程MongoDB
- .NET處理HTTP請求HTTP
- 處理REST SOE請求REST
- 在 .NET 中使用 Flurl 高效處理Http請求HTTP
- 多個網路請求中GCD訊號量的使用GC
- C#委託回撥的一個例子C#
- 實現傳送多個Ajax請求
- 如何使用策略模式處理多種型別請求模式型別
- 驚喜!一個檔案多個【請求類】的另類寫法