js中使用队列发送ajax请求
最近,项目中需要按照先后顺序发送ajax请求,并且在一次请求结束后才能发起下一次,不然就会导致逻辑错误。
解决办法是定义一个数组,保存ajax请求数据。
以下使用extjs4定义一个类
Ext.define('tazi.Test', { answerList:[], //保存应答数据 saveAnswer:function(answer){ //需要把应答数据保存到数据库中的第一层方法 this.answerList.push(answer); if(!this.answerInterval){ this.startAnswerInterval(); } }, startAnswerInterval:function(){ //启动 var me=this; me.isRun=false; me.answerInterval=setInterval(function(){ if (me.answerList.length > 0 && !me.isRun) { me.isRun = true; var answer=me.answerList.shift(); ajaxRequest({ //自定义的发送ajax请求的方法 url:'commandAction!saveAnswer.action', params:answer, callBack:function(result){ //请求成功返回后的回调函数 me.isRun = false; //更新同步用的参数isRun } }); } },100); } });