React Native中setTimeout的准确性

2023-11-21

我正在 React Native 中构建一个节拍器。播放点击后,我设置了setTimeout以便下次点击。然而,时机太糟糕了。

我做了以下快速测试:

let time = (new Date()).getTime() + 50;

setTimeout(() => {
  console.log(time - (new Date()).getTime());
}, 50)

理想情况下,我应该在控制台中得到 0。在 Chrome 开发工具中的 React Native 之外运行此代码时,我得到 -1,有时得到 -2(毫秒)。这是一个可以接受的结果。

使用 macOS 上的模拟器在 React Native 中运行它,我得到 0 到 -100 之间的值。这显然是不可接受的。

有人知道这是否是由于不准确造成的setTimeout或不准确(new Date()).getTime()?我可以解决这个问题吗?


您配置的延迟setTimeout and setInterval绝不应将其视为确切的延迟时间。它们表示执行函数之前您将等待的“最短”时间。这是因为用户代理在时间过去后将回调放入事件队列中,但如果用户代理仍在处理其他任务,则回调将放在那里。

您还应该知道,有一个内置的绝对最短时间,您永远不能低于大约 9-14 毫秒。这是由于用户代理的内部结构造成的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native中setTimeout的准确性 的相关文章

随机推荐