我想将 setInterval() 返回的计时器 ID 放入其函数中:
delay_timeout = setInterval(function () {
test_delay(data['time'], delay_timeout);
}, 1000);
这可能吗?在我看来,delay_timeout 目前没有值(value)......
我不想全局保存 delay_timeout 以便稍后在计时器函数中使用来停止它。多个定时器可以同时工作。
更新:
代码不是全局的,它位于此处:
socket.on('test_delay', function (data) {
...
});
重点不是使 delay_timeout 全局化,并能够通过其回调函数中的某些条件终止计时器。
最佳答案
如果您将 setTimeout
调用放入其自己的函数中,则代码可以正常工作,如下所示:
function setTimer(){
var timeId = setTimeout(function(){ console.log(timeId); }, 1);
}
for(var i = 0; i < 10; i ++){
setTimer();
}
delay_timeout 变量可供您的回调使用,因为它位于同一外壳中。
只要您不在同一上下文中,并在触发回调之前重新运行 setTimeout
就可以了。所以这行不通:
var timeId;
for(var i = 0; i < 10; i ++){
timeId = setTimeout(function(){ console.log(timeId); }, 1);
}
(参见 fiddle 的后半部分...)
关于javascript - 将定时器 ID 放入其函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33396668/