AJAX实现延时顺序请求多个URL
作者:CNLei 来源:CNLEI.Blog 发布时间:2007-12-06 18:32:00
标签:url,请求,ajax
因DWS内核目前支持的线程数很少,个人门户首页打开后,如果并发请求加载的模块数过多,很容易导致DWS崩溃,故而给之前写的AJAX类加了个顺序请求的方法:run(arr,obj)
实现了以下功能:
>> 自动延时顺序提交Ajax请求
>> 可指定:两次请求之间的延时毫秒数(默认为100毫秒,最小间隔为5毫秒)
>> 可指定:在请求过程中出错时,是否忽略错误转入下一请求序列(默认为忽略错误执行下一请求)
>> 可指定:顺序请求过程中,是否触发"onloadding"处理函数
>> 可指定: Ajax提交方式(默认为:get)
>> 可定义: 整个系列请求完成后回调处理函数
代码如下:
run :function(a,o){//Ajax Run Seral Request, last update:2007-12-3 11:41
/*
@arr: Array型,必选,AJAX提交队列,二维数组,格式:
[["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=11",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.aspx?id=12",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=12",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=13",testFunc]]
@obj : Object型,请示参数配置,可选,该参数具备以下属性
@obj.method: String型,AJAX提交方式,可选,取值如下:
(1)"GET" : get method, default
(2)"POST" : post method
(3)"SUBMIT" : submit form, 待完善中...
@obj.speed: Number型,延时毫秒数,可选
默认值: 100
最低值: 5
@obj.stop: 布尔型,可选,取值:
(1)true : On Error Stop
(2)false : On Error Resume Next, default
@obj.onload: 布尔型,是否显示"is onloading"提示,可选,取值:
(1)true : Show Loadding MSG, default
(2)false : not Show Loadding MSG
@obj.onend : Function型,队列处理请求完毕后的回调函数,可选
*/
var self=this,W=window,ST="setTimeout",F=false,T=true,S="speed",X="POST",Y="GET",Z="method",L="length",O="object";
var c,m=Y,f,g=F,l=T,t=100,u;
if (a[L]>0){
c=a.shift();//Only for 5.5
if (typeof(o)==O){
t = o[S]?parseInt(o[S]):t;
t = t>5 ? t : 100;
m = o[Z]?o[Z].toUpperCase()==X?X:Y:Y;
g = o.stop?T:F;
l = !o.onload?F:T;
}
if (typeof(c)==O && c[L]>1){
u=c[0],f=self.func(c[1]);
u=u.split("?");
self.load(u[0],u[1],function(s,b,u){
if (b!="1.0"){
f(s,b,u);
if (b=="4.200" || !g){
W[ST](function(){self.run(a,o);},t);
}
} else {
l?f(s,b,u):"";
}
},m);
} else {
if (!g){
W[ST](function(){self.run(a,o);},t);
}
}
} else {
if (o.onend && typeof(o.onend)=="function"){
o.onend();
} else {
//alert("运行完成");
}
}
}
用法举例:
<ol id="testAjax">
<li id="testAjax_0">数据更新中,请稍候...</li>
<li id="testAjax_1"></li>
<li id="testAjax_2"></li>
<li id="testAjax_3"></li>
<li id="testAjax_4"></li>
<li id="testAjax_5"></li>
</ol>
---------------------------------------------------------------------------------
var arrTemp = [];
for (var ii=0; ii<10;ii++) {
arrTemp[arrTemp.length]=["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id="+ii,"testAjax_"+((ii%5)+1)+""];
}
DWS.PCN.AJAX.run(arrTemp,
{ speed:1000,
onend:function(){
//alert("全部加载完毕!");
$DOM().$("testAjax_0").innerHTML = "数据更新完毕!";
}
}
);
var testFunc = function(s,b,x){alert("TEXT:\n"+s+"\n\nURL:\n"+x+"");};
DWS.PCN.AJAX.run([
["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=11",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.aspx?id=12",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=12",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=13",testFunc]
],
{ speed:1000,
stop:false,
method:"get",
onload:false,
onend:function(){alert("全部加载完毕!");}
}
);


猜你喜欢
- filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为Tru
- Python爬虫可以爬取的东西有很多,Python爬虫怎么学?简单的分析下:如果你仔细观察,就不难发现,懂爬虫、学习爬虫的人越来越多,一方面
- 1. 概述动态规划算法应用非常之广泛。对于算法学习者而言,不跨过动态规划这道门,不算真正了解算法。初接触动态规划者,理解其思想精髓会存在一定
- 1. 安装依赖将PyTorch模型转换为ONNX格式可以使它在其他框架中使用,如TensorFlow、Caffe2和MXNet首先安装以下必
- 本文通过Python3+PyQt5实现《python Qt Gui 快速编程》这本书13章程序Rich文本的行编辑,可以通过鼠标右键选择对文
- app01/models.py:from django.db import modelsclass UserInfo(models.Mode
- 在网页中放iframe,如果frameborder=0;就没有边框显示了;但动态创建时,在IE7中就不行了,从网上找到解决的办法,写出来记录
- 仿google的asp分页代码index.asp(文件1)<%@LANGUAGE="VBSCRIPT" CODEP
- 今日一同时问我,new Date(Date(str))这段代码什么意思?我一看就晕了,一个new Date 一个Date这是什么意思?这函数
- glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。1、通配符星号(*)匹配零个或多个字符import globf
- 控制资源访问前文提到threading库在多线程时,对同一资源的访问容易导致破坏与丢失数据。为了保证安全的访问一个资源对象,我们需要创建锁。
- PHP levenshtein() 函数实例计算两个字符串之间的 Levenshtein 距离:<?php echo levensht
- 前言提到数据库,大家第一时间想到的可能是 sql 数据库,这种数据库非常好用,但是对于新手就不是很容易上手,需要熟悉一段时间才可以大概掌握。
- 相信没有人不知道 Firebug 是什么东西,但有时候我们糟糕的代码不想让同行轻松的使用 F12 就能一览无遗。那么怎么办呢?这里有个猥琐的
- 第一种方式阿里云、百度云服务器可用!!!yum install python3第二种方式1.下载python3.6.5的压缩包wget ht
- 一、PEP 8规范官方文档:https://legacy.python.org/dev/peps/pep-0008/中文翻译: https:
- /* *使用方法: * var d = new Drag({id:'dragPannel',maxLeft:500,maxT
- OpenCV imread读取图片失败问题使用一下代码读取一张图片失败(不管是绝对路径还是相对路径,都失败),工程运行都没问题,就是图片读取
- 这个例子可作为一个模式,在你需要的时候套用。<!DOCTYPE HTML PUBLIC &q
- 重点部分:点击表单的 submit按钮 触发form 部分 @submit=”submit”事件:submit事件 定义在js部分: pre