循环中的Ajax

在前后端分离的项目中,Ajax是连接前后端的枢纽。

需求:有一个需要循环发起n次的请求,但是n次循环传参不同,我并不知道n是多少,并且要求能够保证返回顺序。JSONP用同步锁无效

示例一代码:

for(var i = 0;i<5;i++){
    $.ajax({
        url : '',
        data : {},
        type:'GET',
        dataType : 'jsonp',
        success: function(res){
            console.log('ok');
        },
        error : function () {
            console.log(i);
        }
    });
}

这个时候由于url为空,走error方法,我们想要输出12345,但事实控制台输出了5次5。

因为ajax是异步请求,for循环会瞬间执行完,此时ajax还没有正确的返回数据。

实例二代码:

for(var i = 0;i<5;i++){
    (function (i) {
        $.ajax({
            url : '',
            data : {},
            type:'GET',
            dataType : 'jsonp',
            success: function(res){
                console.log('ok');
            },
            error : function () {
                console.log(i);
            }
        })
    })(i)
}

想利用闭包的方式传值,这时候输出结果012345不定排序,并不是按照我想要的顺序返回,因为我们不能确定哪个AJAX请求是先返回的。

示例三代码:

var currentIndex = 0;
function a(){
 if(currentIndex >= 5){
     return;
 }
 $.ajax({
     url : '',
     data : {},
     type:'GET',
     dataType : 'jsonp',
     success: function(res){
         alert('ok');
     },
     error : function () {
         currentIndex++;
         console.log(currentIndex);
         a();
     }
 });
}
a();

由于我们并不知道会有多少请求发送,所以以递归的形式循环,既能循环n次ajax请求,又能保证数据返回的顺序。

Ajax顺序执行的更多相关文章

  1. ajax异步导致js方法顺序执行不了

    js两个方法调用的顺序,有时候是这样的 f1(); f2(); 本来是先执行f1的,但是如果f1里面进行ajax异步    async:true,那么可能会先执行f2,如果想要顺序执行,那么就把异步设 ...

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

    在这儿,可能就要提示一个ajax的一个属性async async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续执行ajax块后 ...

  3. 【原创】cs+html+js+css模式(七): 顺序执行与并发执行问题,IIS7及其以上版本的抛错问题解决

          在进行开发的过程中,针对于这种模式,我们继承的IRequiresSessionState,这种对于我们的同一个IIS的执行中是顺序执行即一个ajax请求处理完成后,才能执行下一个ajax, ...

  4. 更优雅的方式: JavaScript 中顺序执行异步函数

    火于异步 1995年,当时最流行的浏览器--网景中开始运行 JavaScript (最初称为 LiveScript). 1996年,微软发布了 JScript 兼容 JavaScript.随着网景.微 ...

  5. js的并行加载以及顺序执行

    重新温习了下这段内容,发现各个浏览器的兼容性真的是搞大了头,处理起来很是麻烦. 现在现总结下并行加载多个js的方法: 1,对于动态createElement('script')的方式,对所有浏览器都是 ...

  6. testng xml中按顺序执行java类

    如红字部份,将安顺序执行4个类 <?xml version="1.0" encoding="UTF-8"?><suite name=" ...

  7. js的并行加载与顺序执行

    javaScript文件(下面简称脚本文件)需要被HTML文件引用才能在浏览器中运行.在HTML文件中可以通过不同的方式来引用脚本文件,我们需要关注的是,这些方式的具体实现和这些方式可能会带来的性能问 ...

  8. gulp顺序执行任务

    gulp的任务的执行是异步的. 所以,当我写完一系列的任务,准备一股脑地执行. # gulp.task('prod', ['clean', 'compass', 'image', 'style', ' ...

  9. testng.xml顺序执行多个case配置

    testng.xml顺序执行多个case配置 项目结构如图:

随机推荐

  1. Scrum Meeting Alpha - 5

    Scrum Meeting Alpha - 5 NewTeam 2017/10/20 地点:主楼与4号楼之间的走廊2楼 任务反馈 团队成员 完成任务 计划任务 安万贺 完成了对班级作业部分的API的包 ...

  2. Scrum Meeting Alpha - 4

    Scrum Meeting - NewTeam // 地点:新主楼F座二楼 任务反馈 团队成员 完成任务 计划任务 安万贺 确定了API部分的目录结构及包装方式,完成了部分API的包装https:// ...

  3. 根据矩阵变化实现基于 HTML5 的 WebGL 3D 自动布局

    在数学中,矩阵是以行和列排列的数字,符号或表达式的矩形阵列,任何矩阵都可以通过相关字段的标量乘以元素.矩阵的主要应用是表示线性变换,即f(x)= 4 x等线性函数的推广.例如,旋转的载体在三维空间是一 ...

  4. Nginx服务及编译安装

    第1章 Nginx 1.1 nginx的概念 Nginx("engine x")是一个开源的.支持高性能.高并发的WWW服务和代理服务软件,具有高开发(特别是静态资源),占用系统资 ...

  5. ML技术 - 特征选择

    1. 决策树中的特征选择 分类决策树是一种描述对实例进行分类的树型结构,决策树学习本质上就是从训练数据集中归纳出一组分类规则,而二叉决策树类似于if-else规则.决策树的构建也是非常的简单,首先依据 ...

  6. FLP不可能性(FLP impossibility)

    FLP不可能性(FLP impossibility) FLP impossibility是一个定理,它证明了在分布式情景下,无论任何算法,即使是只有一个进程挂掉,对于其他非失败进程,都存在着无法达成一 ...

  7. SimpleMembership

    最近2个月以来,一直在学习MVC,从最开始的2,一直到最新的4.从原来的aspx到现在的Razor引擎,越学越开心,越学越上瘾. 最近为新项目做准备,打算用MVC4,VS2012+SQL2012,反正 ...

  8. 72、django之简单验证码实现与form表单钩子函数补充

    本篇主要讲解简单的验证码实现,验证码使用基本都是找现成的组件来实现,用代码实现这个简单功能主要是了解了解验证码内部的实现. 本篇导航: 五位验证码图示 代码实现 登录验证 Form组件钩子函数补充 一 ...

  9. SSM框架下结合 log4j、slf4j打印日志

    首先加入log4j和slf4j的jar包 <!-- 日志处理 <!-- slf4j日志包--> <dependency> <groupId>org.slf4j ...

  10. 记录项目版本升级angular4 ~ angular5

    前言: 在上一篇ng4文章<angular4--实际项目搭建总结>中说过,等到ng5正式发布,并且蚂蚁的NG ZORRO兼容ng5之后,我会对ng4项目进行升级.这篇文章就是大概说下升级的 ...