如果我为 JavaScript setTimeout 函数提供一个 ID,我该如何执行或触发它?
var timerId = setTimeout(function(){alert('doh')}, 1000);
//timerId; doesn't work,
//trigger it here
clearTimeout(timerId)
如果我为 JavaScript setTimeout 函数提供一个 ID,我该如何执行或触发它?
var timerId = setTimeout(function(){alert('doh')}, 1000);
//timerId; doesn't work,
//trigger it here
clearTimeout(timerId)
调用的动作setTimeout()
应该执行它。我相信你想要做的是让这个动作每秒重复一次。为此,您需要setInterval()
改用:
var timerId = setInterval(function(){alert('doh')}, 1000);
// you'll get an alert every second untill clearTimeout(timerId) is called.
正如@j08691所说,您可能看不到警报,因为您在致电clearTimeout()
后立即致电setTimeout()
。
附带说明一下,您可能不想使用该alert()
函数来调试它,因为警报是一种阻塞操作 - 在显示警报时不会执行其他 JS。console.log()
使用to 进行这种类型的调试会好得多。它不是阻塞的,可以让你很容易地检查你的变量。
setTimeout
has的返回值的唯一用途是取消计时器,您已经在使用clearTimeout
.
如果你想早点触发它,那么你应该清除它,然后调用原始函数。
例如:
function doh(){
alert('doh')
}
var timerId = setTimeout(doh, 1000);
clearTimeout(timerId)
doh();