ajax循环执行

//ajax执行批量操作
!function (w) {
  //ajax构造函数
  var ajaxConstructor = function (batchAjax, backCall) {
    this.run = false;
    this.isOk = false;
    this.backCall = backCall ? backCall : null;
    batchAjax.addajax(this);
  }
  ajaxConstructor.prototype.funok = function () {
    this.run = false;
    this.isOk = true;
  };
  ajaxConstructor.prototype.funrun = function (force) {
    var _self = this;
    if (force) {
      _self.isOk = false;//强制执行
    }
    if (_self.run || _self.isOk) {
      return;
    }
    _self.run = true;
    this.backCall(function () {
      _self.funok.call(_self);
    });
  };

  //批量操作ajax
  var batchAjax = function () {
    this.isOk = false;
    this.okNum = 0;
    this.ajaxLen = 0;
    this.ajaxArray = [];
    this.callBack;
  }
  batchAjax.prototype = {
    addajax: function (ajax) {
      this.ajaxArray.push(ajax);
    },
    ok: function () {
      var ajaxArrayItem = this.ajaxArray[this.okNum];
      ajaxArrayItem.run = false;
      ajaxArrayItem.isOk = true;
      this.okNum++;
      if (this.okNum >= this.ajaxLen && this.callBack) {
        this.callBack();
        return;
      }
      this.run();//goon
    },
    run: function (call) {
      var _slef = this;
      if (!this.ajaxLen) {
        this.ajaxLen = this.ajaxArray.length;
      }
      if (!this.callBack) {
        this.callBack = call;
      }
      if (this.ajaxLen) {
        var ajaxArrayItem = _slef.ajaxArray[_slef.okNum];
        ajaxArrayItem.run = true;
        //已执行了ajax且成功处理
        if (ajaxArrayItem.isOk) {
          _slef.ok.call(_slef);
          return;
        }
        //开始执行ajax
        ajaxArrayItem.backCall(function () {
          _slef.ok.call(_slef);
        });
      }
    },
    result: function () {
      if (this.okNum >= this.ajaxArray.length) {
        return true;
      }
    }
  }

  window.batchAjaxs = function (call, currBatchAjax) {
    var _batchAjax;
    if (currBatchAjax) {
      _batchAjax = currBatchAjax;
    }
    else {
      _batchAjax = new batchAjax();
    }
    return {
      batchAjax: _batchAjax,
      ajaxConstructor: new ajaxConstructor(_batchAjax, call)
    }
  };

}(window);
时间: 2024-11-02 13:28:02

ajax循环执行的相关文章

循环执行sql语句

DECLARE--声明变量SQL_ALLTABLES LONG; SQL_INSERT LONG; TYPE THE_CURSOR_TYPE IS REF CURSOR; --定义引用游标的数据类型CURSOR_D THE_CURSOR_TYPE; --定义游标 DATAUP VARCHAR2(200);BEGIN--井筒文档SQL_ALLTABLES := 'SELECT DISTINCT (TABLE_NAME) FROM USER_TAB_COLUMNS WHERE COLUMN_NAME

delphi.thread.线程循环执行体结构

线程话题太大,又都是些坑,不知从哪方面讲起,所以,想一出是一出了. 不管怎样,我们从开始使用D,不管有没有用线程,其实它已经帮我们做了一个最完整的线程执行处理:Application.Run. 这行App.Run,在dpr,想来各位都经常能够看到,如果跟踪下去,我们就会发现,它其实就是一个最完整的线程执行体的结构了: 我将里面一些代码删除掉了,再将HandleMessage的代码复制过来,然后,代码如下: procedure TApplication.Run; var Msg: TMsg; be

loadrunner循环执行某个动作

1.action部分定义  int   i;  int   count; 2. 打算循环的代码前代码如下:   count=rand() % 8 +1;       for(i=0;i<count;i++)  录制的脚本: 3.其实只需要在需要重复执行的代码前加入for循环语句即可. loadrunner循环执行某个动作,布布扣,bubuko.com

为什么struts2 ajax 方法执行两次

struts2中使用json插件执行ajax处理时,如果方法名是get方法的时候,方法会莫名其妙的执行两次. 原因: struts2 中JSON的原理是在ACTION中的get方法都会序列化,所以前面是get的方法只要没指定不序列化,都会执行解决方法 Action中的业务方法前别加get 或者 set(属性的get set 除外) 用@JSON(serialize=false)指定方法不序列化如import com.googlecode.jsonplugin.annotations.JSON;@

for循环执行流程

语句格式: for(表达式1;表达式2;表达式3) { 循环体 } 表达式1:赋值表达式,用来给控制变量赋初值. 表达式2:逻辑表达式,是循环的控制条件,用来判断控制变量是否符合循环条件,是则进入循环体,否则跳出循环. 表达式3:赋值表达式,用来对控制变量进行增量或减量操作. for循环执行步骤: 步骤1:先初始化控制变量,判断该控制变量是否满足循环条件(表达式1->表达式2),是则进入循环体,否则退出循环 步骤2:更新控制变量,对控制变量进行增量或减量操作,再判断此时控制变量是否满足条件(表达

chapter16:例行性工作(crontab)之二:循环执行的例行性工作调度

循环执行的例行性工作调度是由cron(crond)这个系统服务来控制的,这个服务是系统默认启动的.Linux也提供用户控制例行性工作调度的命令crontab. 一.用户设置 为了安全起见,我们可以限制能够使用crontab的用户.同at类似,用两个文件进行设置,/etc/cron.allow,/etc/cron.deny. 当用户使用crontab这个命令的来新建工作调度后,工作就会被记录到/var/spool/cron里面.而且是以帐号来作为判别的.如chuiyuan在使用这个从后,工作会记录

jquery Ajax 不执行回调函数success的原因

jquery Ajax 不执行回调函数success的原因: $.ajax({ type: "post", contentType: "application/json", url: basePath+"pages/Tongji/disposeAgree.action?cepingitem="+cepingitem+"&userrelation="+userrelation, //data: {fenshu:8},da

动态文字提示一个字一个字蹦出来的 循环执行

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <style> .main { width: 100%; heig

Jquery ajax运用执行顺序有误怎么解决

在这儿,可能就要提示一个ajax的一个属性async async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程和ajax块后面的脚本 所以在有需求需要必须执行完一个ajax在执行另外的程序时,可把async设置为false