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

clearInterval()可以在setInterval()内部调用吗?

屠浩
2023-03-14
bigloop=setInterval(function () {
              var checked = $('#status_table tr [id^="monitor_"]:checked');
                if (checked.index()===-1 ||checked.length===0 || ){
                    bigloop=clearInterval(bigloop);
                    $('#monitor').button('enable');
                }else{

                        (function loop(i) {                           
                            //monitor element at index i
                            monitoring($(checked[i]).parents('tr'));
                            //delay of 3 seconds
                            setTimeout(function () {
                                //when incremented i is less than the number of rows, call loop for next index
                                if (++i < checked.length) loop(i);
                            }, 3000);
                        }(0)); //start with 0
                }                            
            }, index*3000); //loop period

我有上面的代码,有时它是工作的,有时它不是。我想知道clearInterval是否真的清除了计时器??因为有一个监视器按钮只有在它处于监视功能时才会被禁用。当单击名为.outputremove的元素时,我有另一个ClearInterval。请参阅下面的代码:

//remove row entry in the table      
        $('#status_table').on('click', '.outputRemove', function () {
            deleted= true;
            bigloop= window.clearInterval(bigloop);
            var thistr=$(this).closest('tr');
            thistr.remove();
            $('#monitor').button('enable');

            $('#status_table tbody tr').find('td:first').text(function(index){
               return ++index;

            });
        });

但在再次禁用之前启用了一段时间。clearinterval会从setinterval函数中取出程序吗?

共有1个答案

赖鸿羲
2023-03-14

是的,你可以。你甚至可以测试一下:

null

js lang-js prettyprint-override">var i = 0;
var timer = setInterval(function() {
  console.log(++i);
  if (i === 5) clearInterval(timer);
  console.log('post-interval'); //this will still run after clearing
}, 200);
 类似资料:
  • 问题内容: 大家好, 我想调用 一次而不创建一个反复调用的 循环 ,我应该为此使用递归方法还是应该使用 ? 还请告诉我使用?谢谢 :) 问题答案: 设置一个 定期 计时器。它返回一个句柄,您可以将其传递来阻止它触发: 在浏览器上,保证句柄是一个不等于; 的数字。因此,为“未设置计时器”设置一个方便的标志值。(其他平台可能返回其他值;例如,NodeJS的计时器函数返回一个对象。) 要将功能安排为 仅

  • 我正在尝试使用System.Drawing.Printing.PrintDocument OnPrintPage方法打印文档页。 我需要呼叫和外部服务,以获得打印当前页面所需的测量值。当我调用API时,图形对象似乎因为多线程(?)而被锁定并在从API获取数据后尝试使用它时抛出异常。打印文档前无法获取数据。有没有办法避免这样的堵?

  • 问题内容: 有时,当我们必须在内核系统中调用系统调用时,我们调用它的助手或相关的内核函数,而不是执行“ syscall”。我仍然想知道我们可以在内核空间中调用系统调用吗?如果没有,那么阻止我们这样做的原因。 我的问题有点奇怪。 问题答案: 实际上,与普遍看法(以及此处的一些答案)相反,答案是可以的,但是取决于哪个操作系统: 在Linux中,如果可以找到它们的内核导出,则可以调用几乎所有系统调用(以

  • 问题内容: 通常,在setInterval中引用“ this”时,我会分配一个替代的“ self”引用。是否可以在原型方法的上下文中完成类似的任务?以下代码错误。 问题答案: 与Python之类的语言不同,Javascript方法忘记了将其提取并传递到其他地方后才使用的方法。你可以 将方法调用包装在匿名函数中 这样,访问属性并调用它是同时发生的,这是在方法调用中正确设置的必要条件。 您将需要将外部

  • 这个包的主要用途就是在 API 内部执行请求。它允许你在可用的 API 基础上构建你的应用。内部请求也可以返回原始数据,而不是原始响应对象,这意味着你可以获得与之相关的所有语法糖。 我们需要构建一个分发器实例来发起内部请求。 $dispatcher = app('Dingo\Api\Dispatcher'); 我们现在可以用标准的 HTTP 进行内部请求. Route::get('/', func

  • 问题内容: 假设我有一个Python函数和。旨在以递归方式调用自身。不应递归调用。有没有办法确定是否已递归调用它? 问题答案: 为此使用追溯模块: 因此,如果堆栈中的任何条目指示从调用了代码,则该调用是(间接)递归的。该方法使您可以轻松访问此数据。下面的示例中的语句仅计算函数名称的完全匹配数。为了使它更漂亮(感谢agf的想法),您可以将其变成装饰器: