[Javascript] requestAnimationFrame과 setInterval의 차이

2024. 10. 22. 09:39· JAVASCRIPT
목차
  1. setInterval
  2. requestAnimationFrame
  3. 주요 차이점

setInterval과 requestAnimationFrame의 차이

두 메서드보다 자바스크립트 내에서 반복 작업을 실행할 때 사용되는 주요 메서드입니다. 그러나 둘은 동작 방식, 성능, 사용 목적이 다릅니다.

setInterval

  • 지정된 시간 간격마다 콜백 함수를 반복 실행하는 메서드
  • 고정된 간격: 일정한 시간 간격마다 콜백 함수 실행
  • 타이머 지연: 브라우저가 많은 작업을 처리하고 있을 때 타이머가 딜레이 될 수도 있다
  • CPU 사용: 브라우저가 바쁘거나 해당 브라우저 탭을 비활성화 하더라도 계속 작동
  • 사용 용도: 주기적으로 특정 작업 실행 (서버 폴링, 시계 업데이트) 주로 데이터 처리 & 작업에 용이함
setInterval(() => {
  console.log("1초마다 실행");
}, 1000);

requestAnimationFrame

  • 브라우저의 화면 재생 빈도(프레임)에 맞춰서 콜백 함수를 실행
  • 화면 새로 고침에 동기화: 브라우저의 리플로우와 리페인트 주기에 맞춰 콜백을 실행, 애니메이션이 더 부드럽고 효율적
  • 고정되지 않은 간격: 브라우저의 디스플레이 주사율에 따라 달라짐(일반적으로 60FPS, 16.66.ms 간격)
  • 자동 일시정지: 탭이 비활성화 또는 브라우저가 숨겨져 있을 때 자동으로 애니메이션이 중단되어 CPU와 메모리 리소스 절약 가능
  • 보다 정확한 타이밍: 브라우저의 화면 새로 고침 타이밍에 맞춰 실행되므로 애니메이션 작업에서 더 매끄러움
  • 사용 용도: 웹 애니메이션, 캔버스 애니메이션, 스크롤 효과 (주로 애니메이션 관련하여 사용함)

보통 사람의 눈은 1초에 60번 장면이 넘어가야 부드럽다고 느낀다고 한다.

function animate() {
  console.log("프레임마다 실행");

  requestAnimationFrame(animate); // 함수 내부에서 재호출
}

requestAnimaitonFrame(animate);

특정 조건에 따라 함수를 중단하고 싶을 때

let raf;

function animate() {
  if (조건) {
    return cancelAnimationFrame(raf);
  }

  raf = requestAnimationFrame(animate);
}

requestAnimaitonFrame(animate);

주요 차이점

특성 setInterval requestAnimationFrame
타이밍 고정된 시간 브라우저의 프레임 속도에 맞춰 실행
목적 주기적인 작업, 타이머 애니메이션에 최적화
리소스 관리 탭이 비활성화 되어도 실행 탭이 비활성화되면 일시 중단
정확성 시스템 부하에 따라 지연 발생 가능 브라우저 프레임에 맞춰 일정한 간격 유지
사용 사례 서버 폴링, 타이머 애니메이션, UI 렌더링

'JAVASCRIPT' 카테고리의 다른 글

[Javascript] Cookie, localStorage, sessionStorage  (0) 2025.01.16
[Javascript] Proxy 객체  (0) 2025.01.15
[Javascript] 비동기 작업을 처리하는 방법  (2) 2024.09.11
[Javascript] 자바스크립트는 컴파일 언어? 인터프리터 언어?  (0) 2024.09.04
[Javascript] 자바스크립트의 비트 연산자 (Bitwise Operators)  (0) 2024.09.04
  1. setInterval
  2. requestAnimationFrame
  3. 주요 차이점
'JAVASCRIPT' 카테고리의 다른 글
  • [Javascript] Cookie, localStorage, sessionStorage
  • [Javascript] Proxy 객체
  • [Javascript] 비동기 작업을 처리하는 방법
  • [Javascript] 자바스크립트는 컴파일 언어? 인터프리터 언어?
seominki
seominki
seominki
minki's blog
seominki
전체
오늘
어제
  • LIST (44)
    • JAVASCRIPT (11)
    • TYPESCRIPT (7)
    • REACT & NEXT (6)
    • VUE (8)
    • WEBPACK (3)
    • FIREBASE (1)
    • LINUX (1)
    • GIT (2)
    • 자료구조 & 알고리즘 (2)
    • CS (0)
    • HTML&CSS (1)
    • AWS (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

hELLO · Designed By 정상우.v4.2.2
seominki
[Javascript] requestAnimationFrame과 setInterval의 차이
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.