Выполняет ли window.requestAnimationFrame потоки? [дубликат]

Sep 01 2020

Создает ли window.requestAnimationFrameфункция новые потоки, чтобы позволить функции, в которой она вызывается, и самой функции работать параллельно? Потому что я не понимаю, почему следующий код не приводит к переполнению стека.

window.requestAnimationFrameзвонки mainи mainзвонки window.requestAnimationFrameи тд ...

w.rAF-> main-> w.rAF-> main-> w.rAF. . .

main.js

function main(currentTime){
    window.requestAnimationFrame(main);
    console.log(currentTime);
}

window.requestAnimationFrame(main);

index.html

<script src="main.js"></script>

Ответы

1 Snuffels11 Sep 01 2020 at 13:09

requestAnimationFrameсообщает браузеру запустить функцию до того, как будет отрисован следующий кадр. Если вы снова вызовете requestAnimationFramemain, эта функция будет помещена в очередь для следующего (не текущего) animationFrame.

В Javascript только рабочие потоки.

requestAnimationFrame- это специальная функция для выполнения кода в определенной точке цикла событий. Я нашел это видео весьма полезным для объяснения того, как работает цикл событий:https://www.youtube.com/watch?v=cCOL7MC4Pl0

1 Quentin Sep 01 2020 at 12:53

Нет. Переданные функции requestAnimationFrameставятся в очередь, а не в потоках.