JavaScript:window.setTimeout(),强制提前到期

dan*_*ans 1 javascript jquery settimeout

<div>我的页面上有一个每两分钟自动刷新一次的更新日志条目.当我第一次加载我的网页时,我调用以下函数.

function getLogs() {
    var filter = $('#filter').val();
    $.get("index-ajax.asp", { queryType: "getLogs", filter: filter, 
        uTime: new Date().getTime() },

        function(data){
            $("#logEntries").html(data);
            window.setTimeout("getLogs()",120000);
    });
}
Run Code Online (Sandbox Code Playgroud)

我知道上面的代码可能更干净window.setInterval(...);但我只是喜欢控制window.setTimeout(...);.

我的问题是,是否可以取消下一次超时执行?如果我更改过滤器,我想取消下一个超时,并立即调用该函数,这将重新安排超时功能.有没有更好的方法来实现这一结果?

请注意,上面的代码是在jQuery中.

j08*_*691 7

是的,使用clearTimeout.

例如:

var clr = window.setTimeout(getLogs,120000);
Run Code Online (Sandbox Code Playgroud)

什么时候你想清除它:

clearTimeout(clr);
Run Code Online (Sandbox Code Playgroud)

  • PS不要将字符串传递给`setTimeout`. (2认同)
  • 还有一个函数`clearInterval`,但你可以使用`clearTimeout`,它也能正常工作。 (2认同)