Javascript 如何准确设置延时状态?

Javascript 如何准确设置延时状态?,javascript,react-native,setinterval,setstate,Javascript,React Native,Setinterval,Setstate,我试图在给定的时间间隔(100ms)上设置状态。我在实践和研究中发现,setInterval是不准确的,并且会随时间浮动。我需要它是准确的,因为我的目标是让我的应用程序中的数据(来自数组)与视频同步 以下是我目前拥有的: data = this.processCSV(text); let idx = 0 this.intOne = setInterval(() => { this.setState(previousState => ( {

我试图在给定的时间间隔(100ms)上设置状态。我在实践和研究中发现,
setInterval
是不准确的,并且会随时间浮动。我需要它是准确的,因为我的目标是让我的应用程序中的数据(来自数组)与视频同步

以下是我目前拥有的:

data = this.processCSV(text);
    let idx = 0
    this.intOne = setInterval(() => {
      this.setState(previousState => (
        {
          data1: parseFloat(data[idx][2]),
          data2: parseFloat(data[idx][1]),
          data3: parseFloat(data[idx][3])
        }
      ));
      idx = idx + 1;
      }, 100);
在我的研究中,我发现了一些使用
Date
精确跟踪时间并解释漂移的解决方案

预期结果:
setState
每秒被调用10次,持续时间更长


当前结果:
setState
每秒调用约9次,并继续偏离预期时间

没有web api为您提供这样的保证。更糟糕的是,如果您的应用程序运行在非rtos环境中,则无法提供保证。有什么可以让我接近的吗?我想完美的保证是不现实的,但是拥有比setInterval更好的东西会更好。如果你重新思考整个问题:你不依赖于滴答声的数量,而是依赖于当前的视频时间线并从中推断你的状态。我喜欢这个主意,但不确定我将如何实现这一点……可能是重复的