实现ajax的队列请求
来源:互联网 发布:周小平扒皮网络大v 编辑:程序博客网 时间:2024/05/19 23:12
var ajaxes = []; //用于存储参数对象的队列
//用于声明XMLHttpRequest实例对象
var Xhr = function(){
var xhr = false;
try {
xhr = new XMLHttpRequest();
}
catch (e) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xhr;
}
var xhr = new Xhr(); //获得XMLHttpRequest实例对象xhr
//executeAjax是主要的执行Ajax的函数
var executeAjax = function(){
//如果队列为空,则退出执行
if (!ajaxes.length)
return;
var options = ajaxes[0];
if (xhr) {
xhr.open(options.method, options.url, true);
xhr.onreadystatechange = function(){
if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 304)) {
options.callback(xhr.responseText, xhr);
//删除队列中的第一个请求
ajaxes.shift();
//如果队列中还有请求,就接着递归执行executeAjax函数,直到队列为空
if (ajaxes.length > 0) {
executeAjax();
}
}
}
if (xhr.method === "post") {
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
xhr.send(options.data || null);
}
}
//用于添加队列的函数
var addAjax = function(options){
ajaxes.push(options);
//用于声明XMLHttpRequest实例对象
var Xhr = function(){
var xhr = false;
try {
xhr = new XMLHttpRequest();
}
catch (e) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xhr;
}
var xhr = new Xhr(); //获得XMLHttpRequest实例对象xhr
//executeAjax是主要的执行Ajax的函数
var executeAjax = function(){
//如果队列为空,则退出执行
if (!ajaxes.length)
return;
var options = ajaxes[0];
if (xhr) {
xhr.open(options.method, options.url, true);
xhr.onreadystatechange = function(){
if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 304)) {
options.callback(xhr.responseText, xhr);
//删除队列中的第一个请求
ajaxes.shift();
//如果队列中还有请求,就接着递归执行executeAjax函数,直到队列为空
if (ajaxes.length > 0) {
executeAjax();
}
}
}
if (xhr.method === "post") {
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
xhr.send(options.data || null);
}
}
//用于添加队列的函数
var addAjax = function(options){
ajaxes.push(options);
}
实现方法:
1、创建一个队列数组[]
2、将所有的请求push到队列数组
3、请求队列数组(清空队列)
阅读全文
0 0
- 实现ajax的队列请求
- AJAX 请求队列实现
- AJAX 请求队列实现
- 多ajax请求的各类解决方案(同步, 队列, cancel请求)
- jQuery实现的ajax队列(queue)
- jQuery实现的ajax队列(queue)
- 基于ajax异步请求的实现
- JQuery的Ajax请求实现局部刷新
- Ajax实现异步请求的整个过程
- 基于 XMLHttpRequest实现的Ajax请求
- ajax请求绕过同源策略的实现
- Ajax实现异步请求的整个过程
- 简单的实现Ajax跨域请求
- 原生的js实现ajax请求
- ajax实现异步请求的json方式;
- jquery的ajax实现异步请求范例
- js实现ajax请求
- PHP实现AJAX请求
- 数据结构第十周项目——验证算法(三)
- Sqlplus,设置 不换行,列宽,隐藏标题
- iOS
- 曼彻斯特编码
- vue之watch用法
- 实现ajax的队列请求
- 第12周【项目
- DOM的innerHTML
- 第21章 OpenWrt串口的使用1
- GAN的基本原理、应用和走向
- Java初学者的建议!
- 特辑丨架构师进阶之路精品文章集萃
- fetch将返回值进行对应类型的转换
- PHP上传Excel文件导入数据到MySQL数据库示例