더북(TheBook)

그림 16-3 시작 버튼 클릭 후 상황

호출 스택에 있던 함수들은 실행 즉시 종료되어 호출 스택을 빠져나갑니다. 여기서 다시 1초가 지나면 백그라운드에 있던 타이머들이 태스크 큐로 넘어갑니다. 1초 반복 타이머가 1초 타이머보다 먼저 등록됐으므로 1초 반복 타이머의 콜백 함수인 tick()이 태스크 큐에 먼저 들어갑니다. 이어서 1초 타이머의 콜백 함수가 태스크 큐에 들어갑니다.

호출 스택이 비어 있으므로 tick() 함수가 호출 스택으로 이동해 실행됩니다. 이때 다시 1초 타이머가 백그라운드에 등록되고 hidden 클래스를 제거합니다. 뒤이어 실행되는 1초 타이머의 콜백 함수에서 다시 hidden 클래스를 추가합니다. 그래서 hidden 클래스가 사라지지 않고 계속 남아 있게 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.