map, C.map, L.map 차이

nn·2023년 6월 25일
0

  const delay1000 = (a, name) => new Promise(resolve => {
    console.log(a, name)
    setTimeout(() => resolve(a), 1000);
  });

map(a => delay1000(a * a, "map"), [1, 2, 3])
C.map(a => delay1000(a * a, "cMap"), [1, 2, 3])
L.map(a => delay1000(a * a, "LMap"), [1, 2, 3]) // 대기중 

map은 즉시 실행 함수로, 요소를 끝까지 돌면서 map에 적용된 함수를 실행한다.

delay1000함수는 1초 후에 함수를 실행하도록 해준다.
map은 a * a를 요소를 돌며 일초마다 즉시 실행한다.

C.map은 병렬로 작동하는 함수이다.
map은 0번 인덱스부터 마지막 인덱스까지 순차적으로 delay1000를 실행했다면
C.map은 배열의 모든 요소가 동시에 delay1000를 시작한다.

L.map은 지연평가가 적용된 map이다.
L.map자체로는 아무런 값이 평가되지 않아 아무것도 확인할 수 없다.
값을 사용하려는 시점까지 지연되어있다가 연산이 시작되어 값이 필요할 때 값을 만든다.

즉 콘솔로 위 로그를 확인하면 아래와 같다.

L.map은 아래와 같이 로그를 출력하는 연산 (log)를 실행할 때 값이 만들어지게 된다.

go(L.map(a => delay1000(a * a, "LMap"), [1, 2, 3]), takeAll, log)

profile
내가 될 거라고 했잖아

0개의 댓글