Как же это бесит. Роман Кузнецов, вы бы сперва определились, чего вам надо, а потом уже вопросы задавали. Этот check - он часть суммы. Что вы собираетесь получить, складывая "еще больше" и... и неважно что ещё. Подумайте. Результаты раздумий сюда выкладывать не надо - на исходный вопрос я ответил, ничего более добавлять не собираюсь.
Тут следует понимать, что плавной смены состояния у элемента input нет. Её можно лишь имитировать - устанавливая последовательные значения между старым и новым. Типа, старое значение 10, новое 20 - делаем setInterval, поочерёдно выставляем 11, 12, 13, ... 20. При этом, выглядеть плавно это будет не всегда - если количество шагов между максимальным и минимальным значениями меньше ширины элемента в пикселях, то рывки неизбежны. В общем, сомнительное решение. Наверное, лучше будет сделать собственный компонент интервала (или взять готовый), и анимировать его с помощью css.
Александр Корегин, хотите, чтобы такого не было - надо переделать логику. Вместо сравнения текущей даты с конечной надо при старте посчитать количество секунд до конца и уменьшать это число.
Александр Корегин, возможная причина номер два - setInterval вовсе не гарантирует, что функция будет вызываться точно через указанные промежутки времени.
Александр Афанасьев, debounce возвращает функцию. Функции надо вызывать. Ни в "первом варианте", ни у вас вызова функции, возвращаемой debounce'ом, нет. Кроме того, вам debounce не нужен (если конечно вы о чём-то не умолчали):