Как сделать таймеры для разных комнат node.js?
Как сделать таймеры для разных комнат node.js? Ка лучше или как правильно сделать таймеры для разных столов? Пытаюсь так, но у то кого способа нет возможности удалить таймер.
let room={};
function getTimer (e){
room[e]={
time:(function () {
let i=10;
function time() {
i--;
console.log("тик так",i);
if(i>0){
setTimeout(time,1000)
}
if(i===0){
//что то произошло
}
}
time();
})(),
use:{}
};
}
getTimer(1)
getTimer(2)
Как правильно реализовать таймер на каждую комнату с возможностью отключения или удаления его? Например в тот момент если люди покинули комнату за которым данный таймер ведет отсчет?
Ответы (1 шт):
Автор решения: Stepan Kasyanenko
→ Ссылка
Можно сделать в стиле ООП.
class MyTimer {
isRunning = false;
timeoutId;
name;
constructor(name) {
this.name = name;
}
start() {
this.isRunning = true;
let i = 10;
var time = () => {
if (!this.isRunning) {
this.stop();
return;
}
i--;
console.log(this.name, "тик так", i);
if (i > 0) {
this.timeoutId = setTimeout(time, 1000);
}
if (i === 0) {
this.stop();
//что то произошло
}
}
time();
}
stop() {
clearTimeout(this.timeoutId);
this.isRunning = false;
}
}
var timer1 = new MyTimer('первый');
var timer2 = new MyTimer('второй');
timer1.start();
// Останавливаем первый таймер через 3 секунды
setTimeout(function() {
timer1.stop();
}, 3000);
timer2.start();