因DWS内核目前支持的线程数很少,个人门户首页打开后,如果并发请求加载的模块数过多,很容易导致DWS崩溃,故而给之前写的AJAX类加了个顺序请求的方法:run(arr,obj)
实现了以下功能:
>> 自动延时顺序提交Ajax请求
>> 可指定:两次请求之间的延时毫秒数(默认为100毫秒,最小间隔为5毫秒)
>> 可指定:在请求过程中出错时,是否忽略错误转入下一请求序列(默认为忽略错误执行下一请求)
>> 可指定:顺序请求过程中,是否触发"onloadding"处理函数
>> 可指定: Ajax提交方式(默认为:get)
>> 可定义: 整个系列请求完成后回调处理函数
代码如下:
/*
@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>
<li>数据更新中,请稍候...</li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></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("全部加载完毕!");}
}
);