setTimeOut 을 여러개 등록 했을 때, 실행 순서가 등록 순서와 다른 이유(javascript)
우선 위 질문에 대답하기 전에, javascript 실행엔진이 어떻게 작동하는지 알아야 한다. javascript 엔진은 컨텍스트 스택과 이벤트 큐로 이루어져 있다. 컨택스트 스택에서 가장 위에 있는 요소가 현재 실행중인 스택이다. 예를 들어 javascript 코드 에서 우리가 setTimeOut(fun1, 7000); setTimeOut(fun2, 5000); setTimeOut(fun3, 3000); setTimeOut(fun4, 6000); 이렇게 되면 아마 fun3, fun4, fun2, fun1 순서대로 불러와질 것이다. 어떻게 이렇게 돌아가는가? setTimeOut 함수들이 각각 쌓이면서 지정한 시간만큼 돌아가면 , 그 이후에 각 함수가 이벤트 큐에 넣어지기 때문에 그렇다.
더보기
[Head first design pattern] Factory 패턴
Factory 패턴은 클래스를 사용하는 코드와 생성하는 코드를 분리하는 패턴이다. 내 생각에 이 패턴은, 클래스를 사용하는 코드들이 분산되어있을때 유용 한것 같다. 클래스를 사용하는 코드들이 분산되어있으면, 생성하는 코드만 따로 모아두는게 더 코드 확장에 용이하기 때문이다. (ocp) (예를 들어 피자를 bake, prepare, cut 하는 함수들이 pizza 의 멤버 함수가 아니라 어떤 요리를 준비하는 과정으로써 다 분산된 인터페이스로 있다던가) 또한, 용암의 종류에 따라 만들어지는 화산이 달라지듯이, 특정 조건에 따라 만들어지는 타입의 클래스 객체들이 다 다르고, 그러한 객체들을 공통된 조건을 가진 객체들끼리 분류 할 수 있을때, 팩토리 패턴은 유용한 것 같다. 지역마다 김치 만들때, 백김치, 총감..
더보기