코드 15-4와 코드 15-5도 같은 폴더에 두고 코드 15-2를 크롬 브라우저에서 열었던 것처럼 열어 줍니다. 코드 15-5에서 cpu_bound_task는 콜 스택을 비우지 않고 시간이 5초를 넘기 전까지는 계속 while 문 안에 갇혀 있습니다. 여기서 start.valueOf()는 밀리초를 반환하므로 ms는 함수가 시작한 시점에서 현재까지 경과한 시간을 밀리초 단위로 가지며, sec는 초로 변환합니다. 아래 if 문에서는 1초마다 경과 시간을 콘솔 창에 출력합니다. 코드 15-5 앞부분에 있는 setTimeout 함수를 보면 전달한 콜백 함수를 1초 후에 실행해야 합니다. 이 코드를 실행하면 과연 1초 후 callback executed를 콘솔 창에서 확인할 수 있을까요? 실행 결과를 보겠습니다.
▲ 그림15-2 실행 결과