worker.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /**
  2. * 网址:www.rockoa.com
  3. * 异步url使用
  4. */
  5. var queue = {
  6. addqueuearr:[],
  7. yunoi:0,
  8. yunbool:false,
  9. callback:false,
  10. //添加返回对应序号
  11. add:function(cans){
  12. if(!cans)cans={};
  13. var url = cans.url;
  14. if(!url)return -1;
  15. cans.url = url;
  16. this.addqueuearr.push(cans);
  17. if(!this.yunbool)this.runqueue(this.yunoi);//开始运行
  18. return this.addqueuearr.length-1;
  19. },
  20. //运行
  21. runqueue:function(i){
  22. this.yunbool = true;
  23. var da = this.addqueuearr[i];
  24. if(!da)return;
  25. $.ajax({
  26. type:'get',url:da.url,
  27. success:function(str){
  28. if(da.success)da.success(str, da, i);
  29. queue.nextqueue();
  30. },
  31. error:function(e){
  32. var str = '处理出错:'+e.responseText+''
  33. if(da.error)da.error(str, da, i);
  34. queue.nextqueue();
  35. }
  36. });
  37. },
  38. clearqueue:function(){
  39. this.addqueuearr=[];
  40. this.yunoi=0;
  41. this.yunbool=false;
  42. this.callback=false;
  43. },
  44. nextqueue:function(){
  45. this.addqueuearr[this.yunoi]=false;
  46. var len = this.addqueuearr.length;
  47. var oi = this.yunoi+1;
  48. this.yunoi=oi;
  49. if(oi<len){
  50. this.runqueue(oi);
  51. }else{
  52. this.yunbool=false;
  53. this.callback=false;
  54. }
  55. },
  56. //发送一组地址:
  57. addlist:function(darr,funb, lxs){
  58. var oi=0,zong=darr.length,i,bers;
  59. if(!lxs)lxs='处理';
  60. this.callback=false;
  61. if(!funb)funb=function(){};
  62. if(zong>0)js.msg('wait',''+lxs+'中(<span id="chulsss">0%</span>)...',0);
  63. for(i=0;i<zong;i++){
  64. bers = function(str){
  65. oi++;
  66. var bili = (oi/zong)*100;
  67. $('#chulsss').html(''+js.float(bili)+'%');
  68. if(bili==100){
  69. js.msg('success',''+lxs+'完成');
  70. funb();
  71. }
  72. if(queue.callback){
  73. queue.callback(str, bili);
  74. }
  75. };
  76. queue.add({url:darr[i],success:bers,error:bers});
  77. }
  78. }
  79. }