Основной класс:
class Random {
constructor(timer) {
this.timer = timer
this.status = 0
this.emitter = new EventEmitter()
}
async setStatus() {
const interval = setInterval(()=> {
this.timer -= 1
if(this.timer <= 0) {
this.status = 1
this.emitter.emit('end', this.status)
}
}, 1000)
}
}
Клиентский код:
const Random = require('../Random').Random
const chanels = {}
const timers = [{timer: 20, name: "chanel1"},{timer: 400, "chanel2"}]
timers.map((timer,id) => chanels[timer.name] = new Random(timer.time))
socket.on('startTimer', async (name, callback) => {
await chanels[name].setStatus()
chanels[name].emitter.on('end', (data)=> {
console.log(data) //Выводит несколько раз подряд содержимое Data
})
})
Я думал, что это возможно из-за того, что каждый раз при коннекте юзера создается новый слушатель события
chanels[name].emitter.on('end'),
но я пробовал ставить вместо on - once, но все равно событие срабатывает рандомное кол-во раз. Пробовал очищать слушателей
chanels[name].emitter.removeAllListeners(['end']);
перед созданием нового, но результат тот же. Почему так происходит?