- Published on
2024.03.25
[함수형 코딩] - 17. 타임라인 조율하기
자바스크립트에서 단순화 하기 위한 두 단계
- 액션을 통합한다.
- 타임라인을 통합한다.
공격적인 최적화로 속도가 빨라졌지만 버그가 발생하는 이유
왼쪽의 타임라인은 두 응답이 순서대로 실행되기 때문에 각각의 시간을 합산하여야 하고,
오른쪽의 타임라인은 두 응답을 병렬로 실행해 둘 중 긴 시간만 계산하면 된다. 하지만 버그가 발생하는 중.
모든 병렬 콜백 기다리기
위와 같은 문제를 해결하기 위한 방법 - 동시에 도착하는 ajax 응답을 모두 기다렸다가 DOM을 업데이트한다.
병렬로 실행되는 두 응답 중 어느 것이 먼저 끝날지는 알 수 없지만, 두 콜백이 모두 처리되고 업데이트함으로써 최종 결과를 계산한다.
타임라인을 나누기 위한 동시성 기본형
경쟁 조건: 어떤 동작이 먼저 끝나는 타임라인에 의존할 때 발생한다.
자바스크립트에는 이미 구현된 동시성 기본형인 Promise
가 있고, 책의 예제인 cut()
과 비슷하게 동작하는 Promise.all()이 있다.
복잡성 3가지
- 비동기 웹 요청
- 결과를 합쳐야 하는 두 개의 API 응답
- 예측 불가능한 사용자의 액션
멱등원
최초 한 번만 효과가 발생하는 액션