迟震宇 2019-08-27 15:43 采纳率: 0%
浏览 548

想实现一个进度条动态更新

想实现一个进度条动态更新:在for中循环一个ajax,若是同步,页面卡死,等所有ajax执行完毕后,进度条直接到达100%,如果异步,会先执行for循环,导致我的暂停不能使用,想要的效果是每循环一次,ajax执行一次,回调函数执行一次

function updata(){
        var ajax = new $ax(Feng.ctxPath + "/device/oriDataByYear", function (data) {
            for(var key in data){
                var tableName = data[key][0];
                var startTime = data[key][1];
                var endTime = data[key][2];
                var num = data[key][3];
                var count = Math.floor(num/100);
                total += parseInt(num);
                for(let j = 0; j <= count; j++){
                                    if(start){
                    aj3(tableName,startTime,endTime,j,start);
                                        }
                                }
            }
        });
        ajax.set('tableid',$("#tableid").val());
        ajax.set('startTime',$("#startTime").val());
        ajax.set('endTime',$("#endTime").val());
        ajax.start();
    }
    //单张表更新历史数据
    function aj3(tableName,startTime,endTime,j,start){
        if (start == true) {
            $.ajax({
            type: 'get',
            url: Feng.ctxPath + "/device/getDataByTableId",
            data: {
                "startTime": startTime,
                "tableName": tableName,
                "endTime": endTime,
                "num": j * 100,
                "formula": $("#formula").val(),
            },
            async: true,
            success: function (da) {
                init(da)
            }
            });
        }
    }

    //更新进度条
    function init(da){
        flag += da;
        element.progress('demo', Math.floor((flag / total) * 100) + '%');
        if (flag >= total) {
            $("#end").show();
            $("#stop").hide();
            Feng.success("历史数据更新成功!");
        }
    }
        //暂停
        $("#stop").click(function () {
        start = false;
        $("#end").html("退出");
        $("#end").show();
        $("#stop").hide();
    });
  • 写回答

2条回答 默认 最新

  • 毕小宝 博客专家认证 2019-08-28 08:57
    关注

    这么看来可以试试用同步方式,但是需要将后面的暂停绑定事件挪到前面先执行。

    评论

报告相同问题?

悬赏问题

  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘