0

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

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

2 回答 2

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()使用to 进行这种类型的调试会好得多。它不是阻塞的,可以让你很容易地检查你的变量。

于 2013-08-27T15:05:35.733 回答
0

setTimeouthas的返回值的唯一用途是取消计时器,您已经在使用clearTimeout.

如果你想早点触发它,那么你应该清除它,然后调用原始函数。

例如:

function doh(){
    alert('doh')
}

var timerId = setTimeout(doh, 1000);
clearTimeout(timerId)
doh();
于 2013-08-27T15:05:51.013 回答