인프런 커뮤니티 질문&답변

boyjeong님의 프로필 이미지
boyjeong

작성한 질문수

애플 웹사이트 인터랙션 클론!

requestanimationframe 질문

작성

·

224

0

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

첫번째로는

function loop{...

requestanimationframe(loop)

}

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

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

그리고 두번째로는

위의 addEventListener함수에서

rafId = requestAnimationFramp(loop)

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

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

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

답변 1

0

1분코딩님의 프로필 이미지
1분코딩
지식공유자

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

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

boyjeong님의 프로필 이미지
boyjeong

작성한 질문수

질문하기