我在使用clearTimeout时遇到了一个问题,有几个例子是不工作的。

问题描述 投票:0回答:1

所以,问题是clearTimeout在大多数时候都能正常工作,但有时却不能。首先,我调用函数,在函数结束时,有一个setTimeout来再次调用函数并开始循环,还有一个按钮来清除超时,正如我所说,大部分时间都能正常工作。代码是这样的。反映在控制台的计数器让我直观地看到函数何时运行,何时停止。

EDIT: 我已经有了这样的clearTimeout(foo_timeout),我写错了,抱歉。

var cons = 0

function foo(
  //do some asyncajaxstuff
  cons = cons++
  console.log(cons)
  foo_timeout = setTimeout(foo, 1200);
)

foo()

$("#unsettimeout").click(function(){
  clearTimeout(foo_timeout)
 })
javascript settimeout cleartimeout
1个回答
0
投票

好吧,你的例子清楚地表明 clearTimeout 将永远不会工作。你应该把 setTimeout.

var cons = 0;
var foo_timeout = null;

function foo() {

  cons = cons + 1;
  console.log(cons);

  foo_timeout = setTimeout(foo, 1200);
}

foo();

$("#unsettimeout").click(function() {
  clearTimeout(foo_timeout);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="unsettimeout">Unset Timeout</button>
© www.soinside.com 2019 - 2024. All rights reserved.