Я строю метроном в React Native. После нажатия на кнопку, я установил setTimeout
для следующего щелчка. Сроки, однако, ужасны.Точность setTimeout in React Native
я сделал следующий быстрый тест:
let time = (new Date()).getTime() + 50;
setTimeout(() => {
console.log(time - (new Date()).getTime());
}, 50)
В идеале, я должен получить 0 в консоли. При запуске этого внешнего React Native в Chrome Dev Tools я получаю -1, иногда -2 (мс). Это приемлемый результат.
Запуск этого внутри React Native с использованием Simulator на macOS. Я получаю значения от 0 до -100. Это явно неприемлемо.
Кто-нибудь знает, связано ли это с неточностями setTimeout
или неточностями (new Date()).getTime()
? Могу ли я это исправить?
У меня был такой же опыт, используя неродный код. Наклейка на нативный код на самом деле является единственным решением на данный момент. –