함수형코딩 384-408
중첩구조를 찾아가기위한 키가 많으면 외우기 어렵기 때문에 추상화 구조를 가지고 가면 좀 더 쉽다.
타임라인 격리시키기
함수에는 다양한 숨겨진 액션들이 존재한다
특히 비동기 액션은 또 다른 타임라인으로 고려해야한다.
동시에 일어나지 않은 액션은 구분해서 표시해야한다.
동시에 실행되는 다양한 타임라인은 실제로 아주 동시에 실행되지는 않는다.
이러한 문제는 많은 것을 야기하기 때문에 반드시 인지해야한다.
타임라인은 짧을 수록 좋다. 공유하는 자원이 적을 수록 좋다. 독립적인 데이터를 가지고 실행하는 것이 베스트.
타임라인을 다루는 재사용한 객체를 만들면 타이밍 문제를 쉽게해결할 수 있다
함수형코딩 409-419 36일차
자바스크립트는 단일 스레드 이벤트 루프 방식으로 동작한다.
비동기 요청에 대한 콜백은 비동기 요청이 완료된뒤 작업큐에 순차적으로 등록된다.
이벤트 루프는 작업큐에 있는 작업을 순차적으로 수행한다.
자바스크립트는 논리적으로는 다른 타임라인을 가지고 있지만 타임라인이 끝나는 곳에서 새로운 타임라인 하나만 생긴다면 통합할 수 있다
함수형코딩 420-440
여러 타임 라인이 존재하는 함수 호출을 단순화 해본다.
자바스크립트는 단일스레드 방식이기 때문에 2개의 타임라인을 하나로 합쳐서 생각 할 수 있다.
두 타임라인을 동시에 실행하는데 공유하는 자원이 있다면 문제가 생긴다.
공유 자원을 명시적인 인자로 사용하는 함수로 변경한다.
자원을 독립해서 써야 여러번 호출하는 상황에서도 문제가 생기지 않는다.
전역변수를 독립적인 인자로 사용했다고 해서 완전한 계산이 되는건 아니다.
무지성 액션보단 계산에 가까운 액션을 지향하자.
반환된 값을 돌려주는 방법은 콜백을 사용한다.