Разве этот код JavaScript не должен работать? - PullRequest
0 голосов
/ 20 мая 2018

Итак, у меня есть этот бит кода JS для анимации холста:

function animate() {
requestAnimationFrame(animate);
c.clearRect(0, 0, canvas.width, canvas.height;
}

Поскольку бит requestAnimationFrame предшествует остальному коду, разве это не должен быть просто бесконечный пустой цикл,запустить какой-либо код внутри функции?Очевидно, это не так, поскольку остальная часть кода работает, но мой вопрос: почему?

1 Ответ

0 голосов
/ 20 мая 2018

requestAnimationFrame (rAF) не вызывает вашу функцию немедленно.Он планирует вызвать его непосредственно перед тем, как браузер нарисует следующий кадр (вроде как setTimeout планирует функцию, которая будет вызвана после [приблизительно] заданного числа миллисекунд).Итак, этот код делает настройку обработчика, который будет вызываться для каждого кадра.

Итак, если в какой-то момент что-то вызывает animate, чтобы запустить процесс, это выглядит так:

  1. animate называется
    • Вызывает rAF для планирования вызова до следующего кадра
    • Он очищает прямоугольник
  2. Достигает браузерточка, которую он собирается визуализировать
    • Браузерные вызовы animate
      • См. # 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...