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 相关文章推荐
在Javascript中定义对象类别
Dec 22 Javascript
JavaScript 学习技巧
Feb 17 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
Apr 10 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
Jul 05 Javascript
Scala解析Json字符串的实例详解
Oct 11 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
Aug 31 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
Sep 14 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
Aug 21 Javascript
Django+vue跨域问题解决的详细步骤
Jan 20 Javascript
Vue注册组件命名时不能用大写的原因浅析
Apr 25 Javascript
微信小程序点餐系统开发常见问题汇总
Aug 06 Javascript
JavaScript实现优先级队列
Dec 06 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
ThinkPHP模板输出display用法分析
2014/11/26 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
nodejs基础之多进程实例详解
2018/12/27 NodeJs
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
python使用多进程的实例详解
2018/09/19 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2019/08/27 Python
Django权限设置及验证方式
2020/05/13 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
关于python中remove的一些坑小结
2021/01/04 Python
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
财务会计应届生求职信
2013/11/24 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
搞笑创意广告语
2014/03/17 职场文书
校庆口号
2014/06/20 职场文书
公司介绍信范文
2015/01/31 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书