window.requestAnimationFrame은 스레딩을 수행합니까? [복제]

Sep 01 2020

window.requestAnimationFrame함수가 호출 된 위치와 함수 자체가 병렬로 실행되도록하는 새 스레드를 생성 합니까 ? 다음 코드가 왜 스택 오버플로가 발생하는지 이해하지 못하기 때문에.

window.requestAnimationFrame전화 mainmain전화 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스레드가 아니라 대기열에 있습니다.