@Lampass

Как сделать таймауты для разных пользователей в Node JS?

Делаю телеграм-бота на Node, суть которого создавать таймеры для пользователей. Пользователь может остановить таймер в любое время. Как сделать, чтобы он мог очистить свой таймер?

Моё решение, как начинающего разработчика. Создал массив, в который при создании таймера складываю объект {user_id, timeout}. А при нажатии пользователем на стоп, делаю clearTimeout для нужного объекта и потом удаляю сам объект из массива.

function clearUserTimeout(user_id) {
    const indexOfTimeout = timeouts.findIndex(item => item.user_id === user_id)
    if (indexOfTimeout !== -1) {
        clearTimeout(timeouts[indexOfTimeout].timeout)
        timeouts.splice(indexOfTimeout, 1)
    }
}

Как сделать правильно?
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
@bqio
https://github.com/bqio
Я бы сохранял в объекте не объекты таймеров, а лишь время в UNIX, в момент которого у пользователя должен остановиться таймер и сделал бы 1 общий таймер, который каждую секунду (1.5-2) пробегает по объектам и проверяет указанное там время, сверяет с текущим и если оно меньше текущего, то отсылает сообщение пользователю и завершает его таймер, изменив какую-либо bool переменную, или просто указав время в null.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы