【发布时间】:2017-05-23 17:47:44
【问题描述】:
我有一个程序,客户端可以通过 socket.io 'createTimer'。然后,服务器每秒向同一房间内的所有客户端发送一次。 当超时达到他的最大重复次数时,客户端会发生一些事情,因为时间 = 0。到目前为止一切都很好。但在特殊情况下,我必须在 Timeout 完成之前清除它。但我不知道如何调用 clearTimeout。我对 setInterval 有同样的问题。这是我的代码:
socket.on('createTimer', data => {
interval(function(){
io.sockets.in(data.roomID).emit('newTime',{time:data.time--});
},
1000, data.time+1);
})
function interval(func, wait, times){
var interv = function(w, t){
return function(){
if(typeof t === "undefined" || t-- > 0){
setTimeout(interv, w);
try{
func.call(null);
}
catch(e){
t = 0;
throw e.toString();
}
}
};
}(wait, times);
setTimeout(interv, wait);
};
socket.on('setTimerZero', roomID =>{
// how can I use clearTimeout here? with wich Timeout ID ?
})
感谢您的任何帮助!
【问题讨论】:
-
同时运行不同的超时,因此我不能使用局部变量作为超时 ID
标签: javascript angular sockets settimeout setinterval