相关疑难解决方法(0)

Javascript:在settimeout之前调用cleartimeout可以吗?

我有一个设置计时器的函数,并在计时器到期时调用自身.

我想知道的是清除函数顶部的计时器是不好的做法.

这是因为我将不时地异步调用该函数,如果我不先清除定时器,我将同时运行两个.

我意识到我可以在我对该函数进行另一次调用之前清除计时器,但是我想知道如果我只是在包含计时器的函数内部保持cleartimeout调用它是否会导致任何浏览器出现问题.

另一个想法 - 我可以在进行cleartimeout调用之前测试timer变量,看看它是否是一个计时器?

这是一些示例代码:

function onAir(){

    // reset timer  
    clearTimeout(timer);

    $.getJSON("http://mywebsite.com?format=json&callback=?",function(data){
        if(data.result == '1'){
            do stuff here   
        }
        else{
            do other stuff here
        }   
    });

    // start timer
    timer = setTimeout("onAir()",60000);
} 
Run Code Online (Sandbox Code Playgroud)

谢谢你和我分享你的大脑!

肯尼

javascript timer

16
推荐指数
4
解决办法
1万
查看次数

如何知道计时器在javascript中是清除还是超时?

好的,非常简单的问题.我在javascript参加速成课程.

如果我 timer = setTimeout(..., 500)用来设置定时器,然后clearTimeout(timer)清除定时器,定时器的整数值不会改变,所以我的问题是如何知道定时器是超时还是清除?

我想使用if (timer) {...},但显然正整数总是返回true.

javascript settimeout

7
推荐指数
2
解决办法
7624
查看次数

clearTimeout 没有清除超时

试图清除超时但它不起作用。console.logging 它在初始化和销毁​​后返回一个数字。

    const timer = setTimeout(() => {});
    console.log('initialised', timer); // initialised 22
    clearTimeout(timer);
    console.log('destroyed', timer); // destroyed 22
Run Code Online (Sandbox Code Playgroud)

我期待第二个日志返回空值。我也没想到计时器是一个简单的数字。我原以为它是一个对象。clearTimeout 是否在做它应该做的事情?

javascript

6
推荐指数
1
解决办法
1538
查看次数

标签 统计

javascript ×3

settimeout ×1

timer ×1