最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jQuery AjaxQueue改進(jìn)步驟

 更新時(shí)間:2011年10月06日 22:53:10   作者:  
之前用jquery實(shí)現(xiàn)了一個(gè)簡單的AjaxQueue,用于管理ajax請求的發(fā)送順序。這次改進(jìn)了下。
假期里沒事就想著改進(jìn)下,改得地方不多,主要有以下三點(diǎn):
complete回調(diào)在jquery1.5以后可以是一個(gè)函數(shù)數(shù)組,按數(shù)組順序調(diào)用。
如果前一個(gè)請求未返回,新的請求發(fā)出,那么撤銷前一個(gè)請求,也就是新的請求“覆蓋”原請求。
寫成面向?qū)ο蟮男问?,再用一個(gè)AjaxManage進(jìn)行簡單的管理。
代碼如下,詳細(xì)可看注釋:
復(fù)制代碼 代碼如下:

;(function($) {
// override:新的請求是否要覆蓋之前的請求
function AjaxQueue(override) {
this.override = !!override;
};
AjaxQueue.prototype = {
requests: new Array(),
offer: function(options) {
var _self = this;
var xhrOptions = $.extend({}, options, {
complete: function(jqXHR, textStatus) {
// 支持complete是函數(shù)數(shù)組的情況
if($.isArray(options.complete)) {
var funcs = options.complete;
for(var i = 0, len = funcs.length; i < len; i++)
funcs[i].call(this, jqXHR, textStatus);
} else {
if(options.complete)
options.complete.call(this, jqXHR, textStatus);
}
// 處理結(jié)束,從隊(duì)列中發(fā)出下一個(gè)ajax請求
_self.poll();
},
beforeSend: function(jqXHR, settings) {
if(options.beforeSend)
var ret = options.beforeSend.call(this, jqXHR, settings);
// 如果當(dāng)前ajax請求因?yàn)槟承┰虮怀蜂N了,那么去發(fā)下一個(gè)ajax請求
if(ret === false) {
_self.poll();
return ret;
}
}
});
// 如果支持覆蓋,那么調(diào)用replace
if(this.override) {
// console.log('go override');
this.replace(xhrOptions);
// 反之放入隊(duì)列
} else {
// console.log('go queue');
this.requests.push(xhrOptions);
if(this.requests.length == 1) {
$.ajax(xhrOptions);
}
}
},
// 撤銷前一個(gè)請求,發(fā)送新的請求
replace: function(xhrOptions) {
var prevRet = this.peek();
if(prevRet != null) {
// jquery源碼中可以看到此方法
prevRet.abort();
}
this.requests.shift();
this.requests.push($.ajax(xhrOptions));
},
// 輪詢隊(duì)列 發(fā)送下一個(gè)請求
poll: function() {
if(this.isEmpty()) {
return null;
}
var processedRequest = this.requests.shift();
var nextRequest = this.peek();
if(nextRequest != null) {
$.ajax(nextRequest);
}
return processedRequest;
},
// 返回隊(duì)列頭部的請求
peek: function() {
if(this.isEmpty()) {
return null;
}
var nextRequest = this.requests[0];
return nextRequest;
},
// 判斷隊(duì)列是否為空
isEmpty: function() {
return this.requests.length == 0;
}
};
var queue = {};
// 管理AjaxQueue的簡單對象
var AjaxManager = {
// 創(chuàng)建新的ajaxQueue
createQueue: function(name, override) {
return queue[name] = new AjaxQueue(override);
},
// 清除對應(yīng)name的ajaxQueue
destroyQueue: function(name) {
if(queue[name]) {
queue[name] = null;
delete queue[name];
}
},
// 根據(jù)name得到對應(yīng)的ajaxQueue
getQueue: function(name) {
return ( queue[name] ? queue[name] : null);
}
};
// 跟jQuery關(guān)聯(lián)起來,給個(gè)簡稱,方便調(diào)用
$.AM = AjaxManager;
})(jQuery);

其實(shí)也想再加上done,fail,always等配置,但或許會(huì)變得有點(diǎn)復(fù)雜,就先保持簡單
這里有兩個(gè)我的jsfiddle頁面,一個(gè)是覆蓋效果的,一個(gè)是隊(duì)列效果的,可以直接測試運(yùn)行。
就到這里,如有問題,歡迎指出,thanks。

相關(guān)文章

  • jquery添加div實(shí)現(xiàn)消息聊天框

    jquery添加div實(shí)現(xiàn)消息聊天框

    這篇文章主要為大家詳細(xì)介紹了jquery添加div實(shí)現(xiàn)消息聊天框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Jquery下attr和removeAttr的使用方法

    Jquery下attr和removeAttr的使用方法

    jquery提供一種操作DOM元素屬性的方法: attr(修改和增加DOM元素的屬性) 和 removeAttr(移除屬性)。
    2010-12-12
  • JQuery中DOM事件冒泡實(shí)例分析

    JQuery中DOM事件冒泡實(shí)例分析

    這篇文章主要介紹了JQuery中DOM事件冒泡用法,實(shí)例分析了事件冒泡的原理與阻止冒泡的方法,需要的朋友可以參考下
    2015-06-06
  • JQuery分屏指示器圖片輪換效果實(shí)例

    JQuery分屏指示器圖片輪換效果實(shí)例

    這篇文章主要介紹了JQuery分屏指示器圖片輪換效果實(shí)現(xiàn)方法,實(shí)例分析了jQuery圖片輪播操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • jQuery點(diǎn)縮略圖彈出層顯示大圖片

    jQuery點(diǎn)縮略圖彈出層顯示大圖片

    這篇文章主要介紹了jQuery點(diǎn)縮略圖彈出層顯示大圖片的方法,思路非常不錯(cuò),這里推薦給大家。
    2015-02-02
  • jQuery each和js forEach用法比較

    jQuery each和js forEach用法比較

    這篇文章主要介紹了jQuery each和js forEach用法,結(jié)合實(shí)例形式對比分析了jQuery each和js forEach具體使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-02-02
  • jquery.validate使用攻略 第二部

    jquery.validate使用攻略 第二部

    jQuery.validate.js API說明
    2010-07-07
  • jQuery雙向列表選擇器DIV模擬版

    jQuery雙向列表選擇器DIV模擬版

    前段時(shí)間項(xiàng)目需要用到雙向列表選擇,想直接用select,結(jié)果發(fā)現(xiàn)某些樣式不支持,只好用div模擬了以下.大家根據(jù)個(gè)人需要適當(dāng)添加,對jquery雙向選擇器知識感興趣的朋友一起看看吧
    2016-11-11
  • jQuery遍歷json中多個(gè)map的方法

    jQuery遍歷json中多個(gè)map的方法

    這篇文章主要介紹了jQuery遍歷json中多個(gè)map的方法,涉及jQuery循環(huán)的技巧與針對map的遍歷方法,需要的朋友可以參考下
    2015-02-02
  • Jquery Uploadify上傳帶進(jìn)度條的簡單實(shí)例

    Jquery Uploadify上傳帶進(jìn)度條的簡單實(shí)例

    本篇文章主要是對Jquery Uploadify上傳帶進(jìn)度條的簡單實(shí)例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02

最新評論

阳曲县| 鲜城| 渭南市| 温宿县| 台安县| 加查县| 吉水县| 西畴县| 扎赉特旗| 阳春市| 互助| 睢宁县| 建湖县| 金川县| 南充市| 太保市| 正蓝旗| 通州区| 华池县| 万山特区| 石楼县| 平昌县| 武宣县| 八宿县| 丰都县| 宜丰县| 靖边县| 封开县| 南涧| 申扎县| 政和县| 沙田区| 临海市| 毕节市| 阜平县| 石渠县| 车致| 山东| 普陀区| 苍南县| 城口县|