From 68ef4c26e13dcbaafe6c40ff2f8e046d83b108be Mon Sep 17 00:00:00 2001 From: Dongkyu Kim Date: Tue, 28 May 2024 01:39:38 +0900 Subject: [PATCH] =?UTF-8?q?Create=20=EA=B9=80=EB=8F=99=EA=B7=9C.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\352\271\200\353\217\231\352\267\234.md" | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 "\354\261\225\355\204\260_17/\352\271\200\353\217\231\352\267\234.md" diff --git "a/\354\261\225\355\204\260_17/\352\271\200\353\217\231\352\267\234.md" "b/\354\261\225\355\204\260_17/\352\271\200\353\217\231\352\267\234.md" new file mode 100644 index 0000000..9e86887 --- /dev/null +++ "b/\354\261\225\355\204\260_17/\352\271\200\353\217\231\352\267\234.md" @@ -0,0 +1,43 @@ +# 챕터 17: 타임라인 조율하기 + +#스터디-쏙쏙들어오는함수형코딩 + +## 이번 장에서 살펴볼 내용 + +- 타임라인을 조율하기 위한 동시성 기본형을 만들어봅니다. +- 시간에 관한 중요한 관점인 순서와 반복을 함수형 개발자들이 어떻게 다루는지 확인합니다. + +## 왜 지금 타임라인이 더 빠를까요? + +한쪽은 두 응답을 순서대로 기다려야 하고, 한쪽은 응답을 병렬로 기다리고 있다. 기존 타임라인은 더 빨리 끝나긴하지만 문제가 있다. 이럴 경우 동시성 기본형을 만들어서 빠르고 항상 올바른 순서로 동작하게 만들 수 있다. + +## 모든 병렬 콜백 기다리기 + +목표는 동시에 도착하는 ajax 응답을 모두 기다렸다가 DOM업데이트를 진행하는 것 이다. 각 응답의 콜백은 서로 끝나기를 기다리는데 이것을 컷 이라고 부른다. +컷을 만들면 좋은 점은 컷은 앞부분과 뒷부분이 서로 섞이지 않는다는 것 이다. 실행 가능한 순서를 줄이기 때문에 애플리케이션의 복잡성을 줄여준다. + +## 타임라인을 나누기 위한 동시성 기본형 + +여러 타임라인이 다른 시간에 종료되어도 서로 기다릴 수 있는 간단하고 재사용 가능한 기본형이 필요하다. 이런것은 결국 레이스 컨디션을 막을 수 있다. + +## 여러번 클릭하는 경우 분석 + +우리는 크게 3가지 복잡성을 다루고 있다. + +- 비동기 웹 요청 +- 결과를 합쳐야 하는 두 개의 API응답 +- 예측 불가능한 사용자 액션 + 1번과 3번은 아케텍쳐에 의해 생기는 복잡성이다. 애플리케이션을 만들 때 사용자 인터랙션을 적게 만들어 3번을 없앨 수 있다. + ajax 요청을 사용하지 않으면 1번을 없앨 수 있다. + +``` +실무에서 가능한 방법일까요... +``` + +## 딱 한 번만 호출하는 기본형 + +첫번째로 done()을 부르면 콜백이 실행되는 동시성 기본형이 있다면 콜백을 한번만 부를 수 있다. 최초 한번만 효과를 발생하는 액션을 멱등원 이라고 합니다. + +## 암묵적 시간 모델 vs 명시적 시간 모델 + +간단한 프로그램에서는 암묵적 시간 모델은 좋다. 암묵적 시간 모델의 실행 방식이 애플리케이션에서 필요한 실행 방식과 딱 맞을 일은 거의 없습니다. 그래서 함수형 개발자는 필요한 실행 방식에 가깝게 새로운 시간 모델을 만듭니다.