私は、クライアントがsocket.ioを介して 'createTimer'できるプログラムがあります。その後、サーバーは同じ部屋にあるすべてのクライアントに毎秒1秒を送信します。 Timeoutが最大限の繰り返しに達すると、time = 0なので何かがクライアント側で起こります。しかし、特別な場合、タイムアウトが完了する前にクリアする必要があります。しかし、私はclearTimeoutを呼び出す方法を知らない。私はsetIntervalと同じ問題があります。ここに私のコードです:ソケットイベント経由でsetTimeOutを停止するにはどうすればいいですか?
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 – mcAngular2