首页 文章

Javascript clearInterval()无法清除间隔

提问于
浏览
2

get_user_record()这个函数调用在数据库中提取数据的方法 . 我使用了超时,因为我不希望这个方法,showUpdatedProgressBar()方法的响应,它持续检查数据库计数,并相应地给进度条赋值 . 为此我使用了setInterval()函数,但是我无法清除间隔 . 请建议我哪里出错了 .

function get_user_record(){
        $.ajax({
                url:"/GetData",
                type: "GET",
                timeout: 2000,
                success:function(result){
                    //alert('success');
                },  
                error: function(xhr, status, err){ 
                    //alert('Connection Error. Please try again.')
                }

            });
            var timer = 0;
            showUpdatedProgressBar(timer);
        }

    }
    function showUpdatedProgressBar(timer){

        $.ajax({
            url:"/get_updated_data",
            type: "GET",
            success:function(result){
                result = result.split(',');
                var obj = {totalRecords: result[0], recordsTaken: result[1]};
                var bar_value = obj.recordsTaken/obj.totalRecords * 100;
                $( "#progressbar" ).progressbar({ value: bar_value });

                if(obj.recordsTaken == obj.totalRecords ){
                    clearInterval(timer);                   
                }
                else
                {
                    timer = setInterval(function(){ showUpdatedProgressBar(timer) },1000);
                }
            }           
        });
    }

2 回答

  • 2

    以前我在本地定义了var timer并设置为0现在它只是通过定义var timer来工作;全局而不是将其设置为零

  • 1

    timer = setInterval(function(){showUpdatedProgressBar(timer)},1000);

    每次递归迭代都会为'timer'分配一个新的interval id(它被覆盖) . 因此,只有最后生成的id将在clearInterval中使用 .

相关问题