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 对话框和状态栏使用说明
Oct 25 Javascript
JQuery select标签操作代码段
May 16 Javascript
jquery插件推荐 jquery.cookie
Nov 09 Javascript
jQuery实现DIV层收缩展开的方法
Feb 27 Javascript
js和jquery分别验证单选框、复选框、下拉框
Dec 17 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
Jan 26 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
Sep 04 Javascript
详解jQuery中ajax.load()方法
Jan 25 Javascript
简单的网页广告特效实例
Aug 19 Javascript
JavaScript事件处理程序详解
Sep 19 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
Nov 03 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
Dec 10 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
PHP实现的微信公众号扫码模拟登录功能示例
2019/05/30 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
python 画图 图例自由定义方式
2020/04/17 Python
Python 日期与时间转换的方法
2020/08/01 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
大学生自荐信
2013/12/11 职场文书
人事任命书格式
2014/06/05 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
学习作风建设心得体会
2014/10/22 职场文书
2015年小学生暑假总结
2015/07/13 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
作文之亲情600字
2019/09/23 职场文书
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers