jquer之ajaxQueue简单实现代码


Posted in Javascript onSeptember 15, 2011

没什么复杂的东西,就是用个array对象来做队列,维护ajax请求的顺序。下面给出代码:

;(function($) { 
$.ajaxQueue = { 
// 管理ajax请求的队列 
requests: new Array(), 
// 把待发送的ajax请求加入队列 
offer: function(options) { 
var _self = this, 
// 对complete,beforeSend方法进行“劫持”,加入队列处理方法poll 
xhrOptions = $.extend({}, options, { 
// 如果请求完成,发送下一个请求 
complete: function(jqXHR, textStatus) { 
if(options.complete) 
options.complete.call(this, jqXHR, textStatus); 
_self.poll(); 
}, 
// 如果请求被取消,继续发送下一个请求 
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方式发送ajax请求 
poll: function() { 
if(this.isEmpty()) { 
return null; 
} 
var processedRequest = this.requests.shift(); 
var nextRequest = this.peek(); 
if(nextRequest != null) { 
$.ajax(nextRequest); 
} 
return processedRequest; 
}, 
// 返回队列头部的ajax请求 
peek: function() { 
if(this.isEmpty()) { 
return null; 
} 
var nextRequest = this.requests[0]; 
return nextRequest; 
}, 
// 判断队列是否为空 
isEmpty: function() { 
return this.requests.length == 0; 
} 
} 
})(jQuery);

使用的话就是$.ajaxQueue.offer(settings),settings的配置和jQuery文档的一致。
如果您感兴趣,可以点击我的jsFiddle share进行在线运行,修改等。最后有什么问题,欢迎提出交流 :)

Javascript 相关文章推荐
jQuery ajax cache缓存问题
Jul 01 Javascript
jqueryUI里拖拽排序示例分析
Feb 26 Javascript
js 轮播效果实例分享
Dec 28 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
Apr 07 Javascript
JS基于正则表达式的替换操作(replace)用法示例
Apr 28 Javascript
微信小程序 rich-text的使用方法
Aug 04 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
Mar 02 Javascript
使用canvas实现一个vue弹幕组件功能
Nov 30 Javascript
JS async 函数的含义和用法实例总结
Apr 08 Javascript
公众号SVG动画交互实战代码
May 31 Javascript
微信小程序拖拽排序列表的示例代码
Jul 08 Javascript
原生js实现弹窗消息动画
Nov 20 Javascript
js substr、substring和slice使用说明小记
Sep 15 #Javascript
javascript 闭包
Sep 15 #Javascript
用JQuery模仿淘宝的图片放大镜显示效果
Sep 15 #Javascript
document.getElementById介绍
Sep 13 #Javascript
动态创建样式表在各浏览器中的差异测试代码
Sep 13 #Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Sep 13 #Javascript
jQuery中使用了document和window哪些属性和方法小结
Sep 13 #Javascript
You might like
DedeCms模板安装/制作概述
2007/03/11 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
js传值 判断
2006/10/26 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
js实现图片实时时钟
2020/01/15 Javascript
Python实现针对中文排序的方法
2017/05/09 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
python自动化生成IOS的图标
2018/11/13 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
python实现自动化上线脚本的示例
2019/07/01 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
为什么会有内存对齐
2016/10/10 面试题
医院护士的求职信
2014/01/03 职场文书
商铺消防安全责任书
2014/07/29 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
欧元符号 €
2022/02/17 杂记
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server