🚀 94sssh
Published on

2024.03.25

[함수형 코딩] - 17. 타임라인 조율하기

자바스크립트에서 단순화 하기 위한 두 단계

  1. 액션을 통합한다.
  2. 타임라인을 통합한다.

공격적인 최적화로 속도가 빨라졌지만 버그가 발생하는 이유

최적화
왼쪽의 타임라인은 두 응답이 순서대로 실행되기 때문에 각각의 시간을 합산하여야 하고,
오른쪽의 타임라인은 두 응답을 병렬로 실행해 둘 중 긴 시간만 계산하면 된다. 하지만 버그가 발생하는 중.

모든 병렬 콜백 기다리기

위와 같은 문제를 해결하기 위한 방법 - 동시에 도착하는 ajax 응답을 모두 기다렸다가 DOM을 업데이트한다.
병렬로 실행되는 두 응답 중 어느 것이 먼저 끝날지는 알 수 없지만, 두 콜백이 모두 처리되고 업데이트함으로써 최종 결과를 계산한다.

타임라인을 나누기 위한 동시성 기본형

경쟁 조건: 어떤 동작이 먼저 끝나는 타임라인에 의존할 때 발생한다.

자바스크립트에는 이미 구현된 동시성 기본형인 Promise가 있고, 책의 예제인 cut()과 비슷하게 동작하는 Promise.all()이 있다.

복잡성 3가지

  1. 비동기 웹 요청
  2. 결과를 합쳐야 하는 두 개의 API 응답
  3. 예측 불가능한 사용자의 액션

멱등원
최초 한 번만 효과가 발생하는 액션