分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

Ajax顺序执行

发布时间:2023-09-06 01:32责任编辑:熊小新关键词:Ajax

循环中的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顺序执行

原文地址:https://www.cnblogs.com/yuqing-o605/p/8110983.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved