我想将setInterval()返回的计时器ID放入其函数中:
delay_timeout = setInterval(function () {
test_delay(data['time'], delay_timeout);
}, 1000);
有可能吗?在我看来, delay_timeout 此时没有值......
我不想全局保存 delay_timeout ,以便稍后在计时器的功能中使用它来停止它。几个计时器可能同时工作。
更新:
代码不是全球性的,它位于:
socket.on('test_delay', function (data) {
...
});
关键是不要使 delay_timeout 全局,并且能够通过其回调函数中的某些条件终止计时器。
答案 0 :(得分:1)
如果您将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);
}
(见小提琴的后半部分......)