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
반응형
'Front > JS & jQuery' 카테고리의 다른 글
[js] 병합 시 특정 값만 유지하고 싶다면? (0) | 2025.06.24 |
---|---|
[js] $.extend 사용시 주의점 (0) | 2025.06.23 |
[js] requestAnimationFrame()의 내부 동작 원리 (1) | 2025.06.20 |
[js] requestAnimationFrame() (0) | 2025.06.19 |
[js] requestAnimationFrame 함수 (0) | 2025.06.18 |