给一个超时函数一个Id,但是我如何触发它?

时间:2013-08-27 15:03:13

标签: javascript settimeout

如果我为JavaScript setTimeout函数提供ID,我该如何执行或触发它?

var timerId = setTimeout(function(){alert('doh')}, 1000);
//timerId; doesn't work, 
//trigger it here
clearTimeout(timerId)

2 个答案:

答案 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();