按次序执行ajax的方法
来源:互联网 发布:网络报纸 编辑:程序博客网 时间:2024/06/07 08:42
按次序执行ajax的方法
我们写的前台页面可能要多次和后台交互,页面在初始化的时候需要多次提交ajax请求,列如多个报表的查询,但系统每次查询可能消耗大量的时间,为减轻服务器压力我们需要按次序执行ajax请求,ajax是个异步请求,我们不能简单的for循环请求数据,而必须等待上一个请求返回的时候的再进行下一个请求。
<script type="text/javascript">var ajaxArr = [];var begin = true;//这是个获取ajax方法的封装var getAjax = function (post, fback) { if (begin) ajaxArr.push({ post: post, fback: fback }); else setTimeout(function () { $.ajax({ url: '/Default/GetInnerTest', data: post, dataType: 'json', success: function (data) { if (fback) fback(data) } }); }, 3000);}var loadData = function () { //为了顺序不变,重新生成个数组 var ajaxArr2 = []; var length = ajaxArr.length; for (var i = 0; i < length; i++) ajaxArr2.push(ajaxArr.pop()); //取第一个请求 var one = ajaxArr2.pop(); var tmpFn = one.fback; //将请求完成的回调函数重写,以至于该回调会自动执行下次请求 var fn2 = one.fback = function (data) { //执行原始回调函数 tmpFn(data); //执行下一个 if (ajaxArr2.length > 0) { //先取出一个保留原始回调,重新设置新回调 one = ajaxArr2.pop(); tmpFn = one.fback; one.fback = fn2; //执行下一个请求 getAjax(one.post, one.fback); } } //将真正的ajax回调开关打开执行第一个 begin = false; getAjax(one.post, one.fback);}$(document).ready(function () { var params = {}; getAjax(JSON.stringify(params), function (data) { alert(data.msg); }); getAjax(JSON.stringify(params), function (data) { alert(data.msg); }); getAjax(JSON.stringify(params), function (data) { alert(data.msg); }); getAjax(JSON.stringify(params), function (data) { alert(data.msg); }); loadData();});</script>
阅读全文
0 0
- 按次序执行ajax的方法
- 虚基类的执行次序分析
- Page里的事件 执行的次序
- Java构造函数的执行次序
- Robocode的线程与执行次序
- JS中函数运行的执行次序
- 继承体系中 destructor 的执行次序
- 重载自家运算符的执行次序
- VC/Win32 GetMessage/PeekMessage的执行次序
- if---else---if分支的执行次序。
- Python中元类的执行优先次序
- c++ 构造函数初始化的执行次序
- Java 静态代码块与构造方法执行次序
- Servlet中方法执行次序及API简介(转)
- SQL执行次序
- SQL 查询执行次序
- 查看执行计划次序
- sql条件执行次序
- 虚拟机管理与应用
- Angular CLI 使用教程指南参考
- Python入门系列——第15篇
- canvas画布的简单应用
- HDU 3823 Prime Friend
- 按次序执行ajax的方法
- 扩展 Rxbinding,打造自定义监听多控件接口
- 机器学习常见算法分类汇总
- 市面上分布式系统生成唯一ID的方式收集与整理
- 数组
- 关于ssh开发中的no session问题
- 进程和线程的区别
- 版本控制之分布式和集中式
- 17.07.29 Instant Noodles