킹의 개발일지
쏙쏙 들어오는 함수형 코딩 43일차 본문
43일차 <타임라인 조율하기 2>
저번 파트에서는 Cut 메서드를 사용해서 두 ajax 콜백 중 마지막 콜백이 호출 됐을 때 실행 될 콜백을 지정해 타임라인을 조율 해 보았다. 이와 비슷하게 첫 번째 타임라임에 콜백이 실행되도록 하는 동시성 기본형을 만들어볼 수 도 있다. 이는 JustOnce()라고 해보고 만들어보자.
먼저 누군가에게 메세지를 보내는 함수를 사용한다고 해보자.
# sendAddToCartText
function sendAddToCartText(number) {
sendTextAjax(number, "안녕하세요!");
}
다음은 어떤 함수를 새로운 함수로감싸는 JustOnce() 동시성 기본형이다.
# JustOnce
function JustOnce(action) {
var alreadyCalled = false; // 함수가 호출 됐는지 기억
return function (a, b, c) {
if (alreadyCalled) return; // 실행된적 있다면 종료
alreadyCalled = true; // 함수가 실행 됐다고 기록
return action(a, b, c); // 인자와 함께 액션을 호출
}
}
이렇게 만든 JustOnce 함수는 다음과 같이 쓰일 수 있다.
# 예시
var sendAddToCartTextOnce = JustOnce(sendAddToCartText);
sendAddToCartTextOnce("555-5555-5555");
sendAddToCartTextOnce("555-5555-5555");
sendAddToCartTextOnce("555-5555-5555");
sendAddToCartTextOnce("555-5555-5555");
sendAddToCartTextOnce("555-5555-5555");
// 여러번 호출 되더라도 JustOnce에 의해서 한 번만 호출 된다.
오늘은 Cut이외에 타임라인을 조율하는 JustOnce에 대해서 알아보았다. 타임라인을 조율한다는 것이 OS에서 배웠던 lock의 동작과 매우 흡사했다. 역시 CS는 개발 모든곳에 내재 돼 있어보인다. CS도 가리지말고 열심히 공부해야겠다!
'독서 > 책너두 챌린지' 카테고리의 다른 글
| 쏙쏙 들어오는 함수형 코딩 45일차 (0) | 2023.09.28 |
|---|---|
| 쏙쏙 들어오는 함수형 코딩 44일차 (0) | 2023.09.27 |
| 쏙쏙 들어오는 함수형 코딩 42일차 (0) | 2023.09.23 |
| 쏙쏙 들어오는 함수형 코딩 41일차 (0) | 2023.09.23 |
| 쏙쏙 들어오는 함수형 코딩 40일차 (0) | 2023.09.23 |