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服务器端与客户端通信的代码
Mar 28 Javascript
jQuery循环滚动新闻列表示例代码
Jun 17 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
May 28 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
Jun 12 Javascript
JavaScript制作弹出层效果
Dec 02 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
May 05 Javascript
详解Node.js项目APM监控之New Relic
May 12 Javascript
深入理解vue中的$set
Jun 01 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
May 31 Javascript
JavaScript引用类型RegExp基本用法详解
Aug 09 Javascript
node实现分片下载的示例代码
Oct 17 Javascript
JS实现打字游戏
Dec 17 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
又一个php 分页类实现代码
2009/12/03 PHP
php自动加载机制的深入分析
2013/06/08 PHP
php object转数组示例
2014/01/15 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
vue实现购物车功能(商品分类)
2020/04/20 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
使用python装饰器验证配置文件示例
2014/02/24 Python
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
一套.net面试题及答案
2016/11/02 面试题
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
应付会计岗位职责
2013/12/12 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
在Docker容器中部署SQL Server
2022/04/11 Servers
Ruby处理YAML和json数据
2022/04/18 Ruby