requestAnimationFrame

❓질문

requestAnimationFrame에 대해서 설명해주세요.


💡 조사하기전 내가 알고 있던 내용

이건 잘 모르겠습니다 아마 기억하기엔 화면 프레임에 맞춰서 함수를 비동기 실행 시켜주는 메소드로 알고 있습니다


🏫 정리한 내용

requestAnimationFrame()은 브라우저의 화면 갱신 주기에 맞춰 콜백 함수를 실행하도록 요청하는 API입니다. 이를 통해 애니메이션을 보다 부드럽게 렌더링하고 성능을 최적화할 수 있습니다.

requestAnimationFrame()의 목적은 애니메이션을 위한 프레임 렌더링을 브라우저의 화면 갱신 속도에 맞추는 것입니다. 브라우저는 화면의 프레임을 1초당 60번(60fps)이나 120번(120fps) 갱신하는 것이 일반적인데, requestAnimationFrame()은 이러한 갱신 주기에 맞춰 콜백을 실행해줍니다. 이를 통해 브라우저가 최적의 시점에 프레임을 렌더링하도록 보장하여 부드러운 사용자 경험을 제공하고, 불필요한 연산을 줄일 수 있습니다.

물론, setTimeout()이나 setInterval()을 사용해도 일정한 간격으로 함수를 실행할 수 있지만, 브라우저의 화면 갱신 주기와 맞지 않는 경우가 발생합니다. 그리고 이로 인해 프레임 드롭 및 애니메이션의 끊김 현상이 발생할 수 있습니다. 반면, requestAnimationFrame()은 화면 갱신 주기에 맞춰 실행되므로 프레임 드롭 없이 애니메이션이 매끄럽게 보여지고, 성능 측면에서도 유리합니다.

이외에도, 디스플레이의 주사율에 맞게 콜백의 실행 주기가 동적으로 조정된다는 장점이 있습니다. 60Hz, 120Hz, 144Hz 등 여러 주사율의 디스플레이에서 최적의 타이밍을 찾아 실행됩니다.
더불어, 백그라운드 탭이나 hidden 상태일 때는 실행을 중지한다는 장점이 있습니다. 이는 사용자의 배터리 수명과 시스템 리소스 절약에 도움이 됩니다.