Как мне точно установить состояние на задержку? - PullRequest
2 голосов
/ 08 апреля 2019

Я пытаюсь setState в данный интервал времени (100 мс). Как на практике, так и в ходе исследований я обнаружил, что 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 раз в секунду и продолжает уплывать от ожидаемого времени

...