• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

requestanimationframe 질문

20.12.17 20:57 작성 조회수 164

0

안녕하세요 강사님 두가지 질문이 있는데요

첫번째로는

function loop{...

requestanimationframe(loop)

}

일때 loop이 계속 돌고있는데 이건 그러면  loop함수가 없어지지 않고 계속 생성되고 있는건가요??

답변주시면 감사하겠습니다.

그리고 두번째로는

위의 addEventListener함수에서

rafId = requestAnimationFramp(loop)

을 쓰지 않고 그냥 loop을 쓰면 되지 않나요?

rafId는 loop안에서만 사용되어도 상관없다고 생각이 돼서요.

답변주시면 감사하겠습니다.

답변 1

답변을 작성해보세요.

0

requestAnimationFrame은 기본적으로 1회만 실행이 됩니다.
그치만 우리는 연속적으로 실행이 필요하기 때문에,
function loop() {
    // code..
    requestAnimationFrame(loop);
}
의 형태로 재귀함수처럼 loop 안에서 계속 호출을 해주고 있는 것이지요.

rafId는 나중에 cancelAnimationFrame으로 취소를 할 때 필요해서 값이 보존되어야하기 때문에,
loop의 지역변수가 아닌 바깥에 설정해서 사용해주는 거랍니다^^
(loop 안에서 선언된 지역변수는 loop 함수의 실행이 끝나면 파기됩니다)