169 похожих чатов

Ребят, очень странная ситуация! В общем, имеется таймер, всё достаточно просто(ниже

предоставлю код компонента), ставлю в интервал значение 1000 - таймер выстреливает куда быстрее 1 секунды, ставлю 10000 - работает как надо, каждые 10 секунд выстреливает. Почему так может происходить?
Проверял, запуск таймера срабатывает лишь раз!
Тестирую на физическом устройстве (USB)

Код таймера:

const [timer, setTimer] = useState(59)

useEffect(() => {
setTimerInterval()
return () => { clearInterval(intervalID) }
}, [])

const setTimerInterval = () => {
intervalID = setInterval(() => {
setTimer(timer => {
if (timer - 1 <= 0) {
return clearInterval(intervalID)
}
return timer - 1
})
}, 1000)
}

5 ответов

20 просмотров

В setTimerInterval дичь какая-то написана

Umid-Musaev Автор вопроса
Umid Musaev
В чём именно?

Таймеры сами по себе не обязаны быть супер-точными, и у них есть погрешность, но тут вы вносите гораздо большие погрешности. 1. Вместо алгоритма, который эти погрешности сглаживает, вы используете алгоритм который эти погрешности наоборот накапливает декрементируя счетчик без компенсаций 2. Помимо собственной погрешности таймеров, вы добавляете ненулевой (и довольно значительный в RN) интервал к каждому срабатыванию в виде ререндера компонента для изменения значения хука, этот интервал вообще не предсказуем

Umid-Musaev Автор вопроса
Gena Black
Таймеры сами по себе не обязаны быть супер-точными...

Понял. Реализовал с использованием даты

Umid Musaev
Понял. Реализовал с использованием даты

Да! Если использовать дату, то это будет компенсироваться хотя бы. Локальные отклонения всё равно будут, но в среднем будет тикать как надо

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта