Front/JS & jQuery

[js] cancelAnimationFrame()

오선지♬ 2025. 6. 21. 15:20
728x90
반응형

✅ cancelAnimationFrame()으로 취소하는 방법

📌 기본 사용법

js
 
const id = requestAnimationFrame(myCallback);

// 필요 시 취소
cancelAnimationFrame(id);

 


🧪 예시: 클릭하면 애니메이션 중단

js
let animationId;

function animate(timestamp) {
  // 애니메이션 처리
  console.log("Animating...");
  animationId = requestAnimationFrame(animate);
}

// 시작
animationId = requestAnimationFrame(animate);

// 3초 뒤 중단
setTimeout(() => {
  cancelAnimationFrame(animationId);
  console.log("애니메이션 중지됨");
}, 3000);

✅ 실무에서 쓰는 패턴 요약

📍 렌더링 이후 안전하게 실행

js
 
await this.render();
requestAnimationFrame(() => {
  this.initData(); // DOM 완성 후 실행됨
});

📍 애니메이션 루프 + 취소 가능

js
 
let frameId;

function loop() {
  // some update logic...
  frameId = requestAnimationFrame(loop);
}

// 시작
frameId = requestAnimationFrame(loop);

// 중단 시
cancelAnimationFrame(frameId);

 


✅ 요약 정리

함수 설명
requestAnimationFrame(cb) 브라우저가 다음 프레임 렌더링 전에 cb 실행
cancelAnimationFrame(id) 예약된 cb 실행을 취소
장점 렌더링 최적화, CPU 절약, 프레임에 맞춰 자연스러운 실행
728x90
반응형