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

이종민님의 프로필 이미지
이종민

작성한 질문수

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

부드러운 감속 비디오에 적용하기

scroll 시 loop 호출에 관련해서 질문있습니다.

작성

·

235

0

    if(!rafState) { //현재 스크롤 상태가 아닌 경우에 스크롤 한 경우 loop 함수 RAF로 실행
      rafId = requestAnimationFrame(loop);
      rafState = true;
  }

이 부분에서 loop를 그냥 호출해도 되지 않나요? 굳이 RAF로 호출해주신 이유가 궁금합니다.

또한 rafId를 저장한 이유가 궁금합니다. 여기서 저장하지 않아도 loop 함수 내부에서 RAF 실행으로 반환된 rafId로 인해 cancel되지 않나요? 여기서 실행한 rafId로 실행이 종료되진 않을 것 같은데 굳이 저장해주신 이유가 궁금합니다.

답변 1

0

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

말씀대로 꼭 필요하지는 않은데요, requestAnimationFrame 자체가 리페인트 준비가 잘 끝났음을 보장하기 때문에, 이런 식으로 넣어주기도 합니다. 꼭 넣을 필요는 없어요~

loop에서도 requestAnimationFrame이 실행이 되기 때문에 혹시 모를 오동작을 미연에 방지하기 위해 안전장치로 rafId를 저장했는데, 정상적인 타이밍으로 실행된다면 말씀대로 어차피 loop 함수에서 최종적으로 처리가 될 거기 때문에 저것도 꼭 있을 필요는 없겠네요! 종민님 코드를 디테일하게 잘 살피면서 공부하시는 것 같네요👍

이종민님의 프로필 이미지
이종민

작성한 질문수

질문하기