javascript - ajax顺序执行。链式调用不起作用

 Panzerkampfwagen-VI_238 发布于 2022-11-06 22:13

jquery的$.ajax已经支持链式调用,顺序执行。但是尝试了下还是没有按顺序执行。

由输出控制台可知ajax仍然没有等到上一个执行完便执行下一个了。
--------------------更新-------------------------

2 个回答
  • 昨天回答的 js在循环中 延迟执行 该如何写,回答时写的 异步执行 的 demo,正好是用的ajax的例子。
    直接复制过来了。

    //老规则,为了方便复制,TaskControl 再写一遍
    
    //创建任务控制类
    var TaskControl = function(taskFunction, finishFunction){
        this.finish = false;
        this.next = function(){
            if( !this.finish ){
                taskFunction.call(this);
            }else{
                finishFunction.call(this);
            }
        };
    };
    
    //老规则,为了方便复制,TaskControl 再写一遍:结束
    
    //任务
    var task = function(){
        this.index++; 
        //判断列表中还有没有任务
        if( this.index >= this.data.length ){
            this.finish = true;
            //继续下一个,触发完成
            this.next();
        }else{
            console.time("任务:" + this.index);
            //如果还有任务,开始处理任务
            this.cache.push({
                url : "/q/" + this.data[this.index],
                index : this.index,
                start :  new Date()
            });
                
            $.get(this.cache[this.index].url, (function(html){
                this.cache[this.index].finish = new Date();
                this.cache[this.index].htmlsize = html.length; 
                console.log(this.cache[this.index]);
                console.timeEnd("任务:" + this.index);        
               //继续下一个
               this.next();
            }).bind(this));
        }
    };
    
    var finish = function(){
        console.log("任务完成");
        console.table(this.cache);
    };
    
    var run = new TaskControl(task, finish);
    
    //为了测试方便,将数据也绑定过来
    run.data = ["1010000007271957", "1010000003115114", "1010000007271957", "1010000007271957"];//列表
    run.index = -1;    //默认索引
    run.cache = []; //设置个执行缓存
    
    run.next();    //开始执行
    2022-11-12 01:48 回答
  • 你的写法错了,then里面需要传进去是一个回掉函数,应该这么写

    $.ajax()
    .then(function(data){
        $.ajax()
    })
    .then(function(data){
        $.ajax()
    })

    你那么写,直接就执行了

    2022-11-12 01:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有