当前位置: 首页 > 知识库问答 >
问题:

Javascript clearInterval()无法清除间隔

段干浩荡
2023-03-14

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个答案

谷梁嘉运
2023-03-14

计时器=setInterval(函数(){showUpdatedProgressBar(计时器)},1000);

在每一次递归迭代中,定时器都会被分配一个新的间隔id(它会被覆盖)。因此,在clearInterval中只使用最后生成的id。

梁烨
2023-03-14

以前我在本地定义了var-timer并将其设置为0,现在它只需定义var-timer即可工作;全局设置,而不是将其设置为零

 类似资料:
  • 我有一个文本字段,当用户插入一定数量的字符时,程序应该将其放入JTable并清除文本字段,但它会为

  • 我有一个名为Interval的setInterval,它运行一个倒计时计时器。我有一个开始按钮,第一次点击时播放,第二次暂停就好了。当我双击时,它会将计时器显示回零,但似乎并没有清除实际的计时器。将只播放在显示被0替换之前停止的地方。

  • 不更新输入字段的组件本身 This.SetState正在清除状态中的currentValue,但输入字段的值没有反映状态中的更新

  • 问题内容: 我尝试用硒选择输入,但是当我使用它时,它不起作用: 我正在使用Mac,所以Keys.CONTROL无法正常工作,有人可以帮助我选择输入或清除输入吗? 谢谢 问题答案: Mac无法使用您需要的 试试:

  • 我正在尝试使用maven和tomcat运行简单的struts项目。 当我试图实现下一个目标时:

  • 我只想在进行ajax调用时清除上一个间隔并设置一个新的间隔。 当前代码为: 我尝试了许多推荐的变化,以便能够从函数外部清除间隔。如; 将"间隔"变量设置为null或false, 窗设定间隔, 在setInterval中写入计数函数, 将count函数作为ajax函数之外的单独函数编写, 但这两种变化都没有消除间隔。 稍后,我还需要清除键入的间隔。