jquer之a(chǎn)jaxQueue簡單實(shí)現(xiàn)代碼
;(function($) {
$.ajaxQueue = {
// 管理ajax請求的隊(duì)列
requests: new Array(),
// 把待發(fā)送的ajax請求加入隊(duì)列
offer: function(options) {
var _self = this,
// 對complete,beforeSend方法進(jìn)行“劫持”,加入隊(duì)列處理方法poll
xhrOptions = $.extend({}, options, {
// 如果請求完成,發(fā)送下一個(gè)請求
complete: function(jqXHR, textStatus) {
if(options.complete)
options.complete.call(this, jqXHR, textStatus);
_self.poll();
},
// 如果請求被取消,繼續(xù)發(fā)送下一個(gè)請求
beforeSend: function(jqXHR, settings) {
if(options.beforeSend)
var ret = options.beforeSend.call(this, jqXHR, settings);
if(ret === false) {
_self.poll();
return ret;
}
}
});
this.requests.push(xhrOptions);
if(this.requests.length == 1) {
$.ajax(xhrOptions);
}
},
// 用FIFO方式發(fā)送ajax請求
poll: function() {
if(this.isEmpty()) {
return null;
}
var processedRequest = this.requests.shift();
var nextRequest = this.peek();
if(nextRequest != null) {
$.ajax(nextRequest);
}
return processedRequest;
},
// 返回隊(duì)列頭部的ajax請求
peek: function() {
if(this.isEmpty()) {
return null;
}
var nextRequest = this.requests[0];
return nextRequest;
},
// 判斷隊(duì)列是否為空
isEmpty: function() {
return this.requests.length == 0;
}
}
})(jQuery);
使用的話就是$.ajaxQueue.offer(settings),settings的配置和jQuery文檔的一致。
如果您感興趣,可以點(diǎn)擊我的jsFiddle share進(jìn)行在線運(yùn)行,修改等。最后有什么問題,歡迎提出交流 :)
相關(guān)文章
jQuery擴(kuò)展_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了jQuery擴(kuò)展,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07JQuery 給元素綁定click事件多次執(zhí)行的解決方法
這篇文章主要介紹了JQuery 給元素綁定click事件多次執(zhí)行的解決方法,比較實(shí)用,需要的朋友可以參考下2014-09-09jQuery實(shí)現(xiàn)選項(xiàng)卡功能(兩種方法)
本文主要介紹了jQuery兩種方法寫選項(xiàng)卡的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03使用jQuery中的when實(shí)現(xiàn)多個(gè)AJAX請求對應(yīng)單個(gè)回調(diào)的例子分享
我在為 Mozilla Developer Network(Mozilla開發(fā)者社區(qū)) 寫代碼時(shí)需要加載的一個(gè)普通的的腳本文件,以及一個(gè)JSON流。 因?yàn)槲覀兪褂胘Query,這意味著需要調(diào)用 jQuery.getScript 和 jQuery.getJSON 函數(shù)2014-04-04jQuery中的read和JavaScript中的onload函數(shù)的區(qū)別
這篇文章主要介紹了jQuery中的read和JavaScript中的onload函數(shù)的區(qū)別,這兩個(gè)函數(shù)在web編程中是最常用的,一定要搞清楚它們的區(qū)別,需要的朋友可以參考下2014-08-08