我想将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全局化,并且不能在其回调函数中通过某种条件终止计时器。
最佳答案
如果将setTimeout
调用放在它自己的函数中,则代码工作正常:
function setTimer(){
var timeId = setTimeout(function(){ console.log(timeId); }, 1);
}
for(var i = 0; i < 10; i ++){
setTimer();
}
here's a fiddle
delay_timeout变量可用于您的回调,因为它位于同一机柜中。
只要您不在同一上下文中,并在触发回调之前重新运行
setTimeout
,就可以了。所以这行不通:var timeId;
for(var i = 0; i < 10; i ++){
timeId = setTimeout(function(){ console.log(timeId); }, 1);
}
(请参阅小提琴的下半部分...)