← 질문 목록
#332깊이 0
한 줄짜리 코드가 화면을 멈추게 하는 이유는?
자바스크립트를 도는 자리가 하나뿐이라, 거기서 오래 걸리면 그동안 아무것도 못 하기 때문이다.
호출 스택→브라우저
무거운 반복문이 안 끝난다
대기열→호출 스택
클릭 처리를 넣고 싶지만 자리가 안 빈다
브라우저→화면
다시 그리지도 못한다
클릭 처리도 화면 갱신도 같은 자리를 쓴다. 그래서 계산 하나가 길어지면 화면이 굳는다. 다만 합성만으로 도는 애니메이션은 다른 자리라 그동안에도 움직인다.
기다리는 일은 다르다. 네트워크 응답을 기다리는 동안에는 그 자리를 내놓는다. 그래서 오래 기다려도 화면은 움직인다.
느린 것과 오래 도는 것을 구분해야 한다. 느린 API 호출은 화면을 안 멈추지만, 100만 번 도는 반복문은 멈춘다.
푸는 길은 일을 쪼개거나 다른 자리로 옮기는 것이다. 조각으로 나눠 사이사이 자리를 내주거나, 워커에 넘겨 아예 다른 자리에서 돌린다.