如果我为JavaScript setTimeout函数提供ID,我该如何执行或触发它?
var timerId = setTimeout(function(){alert('doh')}, 1000);
//timerId; doesn't work,
//trigger it here
clearTimeout(timerId)
答案 0 :(得分:2)
调用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()
进行此类调试会更好。它不会阻塞,并且可以让您轻松检查变量。
答案 1 :(得分:0)
唯一使用setTimeout
的返回值是取消计时器,您已使用clearTimeout
进行计时。
如果你想提前触发它,那么你应该清除它,然后调用原始函数。
例如:
function doh(){
alert('doh')
}
var timerId = setTimeout(doh, 1000);
clearTimeout(timerId)
doh();