Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[김동규] 챕터 17: 타임라인 조율하기 #76

Merged
merged 1 commit into from
Jul 30, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions 챕터_17/김동규.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# 챕터 17: 타임라인 조율하기

#스터디-쏙쏙들어오는함수형코딩

## 이번 장에서 살펴볼 내용

- 타임라인을 조율하기 위한 동시성 기본형을 만들어봅니다.
- 시간에 관한 중요한 관점인 순서와 반복을 함수형 개발자들이 어떻게 다루는지 확인합니다.

## 왜 지금 타임라인이 더 빠를까요?

한쪽은 두 응답을 순서대로 기다려야 하고, 한쪽은 응답을 병렬로 기다리고 있다. 기존 타임라인은 더 빨리 끝나긴하지만 문제가 있다. 이럴 경우 동시성 기본형을 만들어서 빠르고 항상 올바른 순서로 동작하게 만들 수 있다.

## 모든 병렬 콜백 기다리기

목표는 동시에 도착하는 ajax 응답을 모두 기다렸다가 DOM업데이트를 진행하는 것 이다. 각 응답의 콜백은 서로 끝나기를 기다리는데 이것을 컷 이라고 부른다.
컷을 만들면 좋은 점은 컷은 앞부분과 뒷부분이 서로 섞이지 않는다는 것 이다. 실행 가능한 순서를 줄이기 때문에 애플리케이션의 복잡성을 줄여준다.

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

여러 타임라인이 다른 시간에 종료되어도 서로 기다릴 수 있는 간단하고 재사용 가능한 기본형이 필요하다. 이런것은 결국 레이스 컨디션을 막을 수 있다.

## 여러번 클릭하는 경우 분석

우리는 크게 3가지 복잡성을 다루고 있다.

- 비동기 웹 요청
- 결과를 합쳐야 하는 두 개의 API응답
- 예측 불가능한 사용자 액션
1번과 3번은 아케텍쳐에 의해 생기는 복잡성이다. 애플리케이션을 만들 때 사용자 인터랙션을 적게 만들어 3번을 없앨 수 있다.
ajax 요청을 사용하지 않으면 1번을 없앨 수 있다.

```
실무에서 가능한 방법일까요...
```
Comment on lines +33 to +35
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤔 😢


## 딱 한 번만 호출하는 기본형

첫번째로 done()을 부르면 콜백이 실행되는 동시성 기본형이 있다면 콜백을 한번만 부를 수 있다. 최초 한번만 효과를 발생하는 액션을 멱등원 이라고 합니다.

## 암묵적 시간 모델 vs 명시적 시간 모델

간단한 프로그램에서는 암묵적 시간 모델은 좋다. 암묵적 시간 모델의 실행 방식이 애플리케이션에서 필요한 실행 방식과 딱 맞을 일은 거의 없습니다. 그래서 함수형 개발자는 필요한 실행 방식에 가깝게 새로운 시간 모델을 만듭니다.
Loading