Home TIL 9일차
Post
Cancel

TIL 9일차

Promise

promise는 대기, 성공, 실패를 담고 있는 일급값으로 이루어져 있다. 대기된 값을 만드는 것이 콜백 함수와 가장 큰 차이점이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function add10(a, callback) {
  setTimeout(() => callback(a + 10), 100);
}

const a = add10(5, (res) => {
  add10(res, (res) => {
    add10(res, (res) => {
      console.log(res); // 1초후 35
    });
  });
});

console.log(a); //결과 undefined

function add20(a) {
  return new Promise((resolve) => setTimeout(() => resolve(a + 20), 100));
}

const b = add20(5)
  .then(add20)
  .then(add20)
  .then((v) => console.log(v)); // 1초후 65

console.log(b); // Promise { <pending> }
//이 처럼 promise로 선언하면 undefined가 아닌 Promise인 값으로 나온다.

특징

  • 비동기 상황에서의 값이란점을 통해 함수에 전달 할 수 있다.
  • 결과의 상황을 일급상황으로 만들어 지속적으로 일들을 해나갈수있다. ( 프로미스를 계속 이어준다.)
  • Promise가 아무리 중첩되어있다 한들 then으로 한번에 값을 꺼내서 사용할 수 있다.

Monad

함수를 안전하게 합성하기 위한 도구, 함수를 합성할 때 다른 함수에서 유의미한 값이 나오지 않을 때 오류가 나타나는데 이것을 방지하기 위해 []를 활용해 []안에 유의미한 값을 넣는다.

Kleisli Composition

오류가 있을 수 있는 상황에서 안전하게 함수를 합성할 수 있는 하나의 규칙

예외 상황이 있는 함수에 promise.reject를 사용해 줌으로써 예외 상황을 예상한다!


🚑깨달은 점

Promise에 대해 대충은 알고 있었지만, 이번 학습을 통해 Promise를 보는 관점을 달리해봐야겠다는 생각을 하게 되었다. 함수형 프로그래밍으로 Promise를 표현하니 어렵기도 했지만 꾸준히 예제 코드를 작성하면서 공부를 해야겠다.

오늘은 학습량에 비해 적은 것이 많지 않아 큼지막한 용어들만 TIL에 적었다. 나중에 복습할 수 있는 기회가 왔으면 좋겠다.😁

-- Missing configuration options! --

TIL 8일차

TIL 10일차