inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

함수형 프로그래밍과 JavaScript ES6+

go, pipe, reduce에서 비동기 제어

acc.then(acc => f(acc,a)); 와 acc.then(recur)의 차이점에 대해서

262

easyiscat

작성한 질문수 12

1

안녕하세요, 좋은 강의 잘 보고 있습니다.

[ 1 ]

for(const a of iter){

  acc = acc instanceof Promise ? acc.then(acc => f(acc,a)) : f(acc,a)

}

의 동작과

 

___

 

[ 2 ]

 

for(const a of iter){

  acc = f(acc,a);

  if(acc instanceof Promise) return acc.then(recur)

}

 

의 동작의 차이가

 

[ 1 ]에서는
Promise.then과 같은 Promise와 체이닝 메서드의 반환값은 Promise이기 때문에
Promise를 만난 이후 부터 go에서 동작하는 iter내부의 함수들이
콜 스택이 아니라 태스크 큐에서 동작하기 때문에 약간의 성능 저하가 발생할 수 있지만,

 

[ 2 ] 에서는

acc instanceof Promise 라면,
return acc.then(acc => recur(acc)); 을 진행하게 되는데,

recur에 넣어준,

acc.then(acc => )에서 then 의 인자로 받은 acc는

Promise.then의 반환값이 아니지만, Promise의 반환 값인데, 이미 비동기 상황이 끝났기 때문에 콜스택에서 동작한다고 이해했는데 맞을까요??

 

 

 

javascript 함수형-프로그래밍

답변 1

0

MDU 유인동

ㄴㅔ 맞습니다 :)

프론트엔드 실무에서 어떤때에 쓰이는지 궁금합니다

1

148

1

함수형 프로그래밍 심화 강의 자료 추천

0

131

2

함수형 자바스크립트 프로그래밍 책

0

94

1

filter가 아무것도 걸러내지 못하는 경우

0

156

1

take 함수의 성능적면에서의 이점

1

517

1

pipe함수

1

557

1

Identity 함수

0

473

1

함수형 프로그래밍이란

0

857

1

reduce 예제 코드 제안!

0

421

1

fxts를 배워보려고 합니다.

1

553

1

flatMap 관련 질문드립니다~

1

471

1

다용성이 높은 L.flatMap

0

378

1

변수에 재 할당 금지~

0

559

1

DevTools라고 옆에 결과 확인하는거 어떻게 하나요?

0

508

2

소요시간에 관해서 질문드립니다

1

482

1

join에 대한 내용이 궁금증이 해결되지 않아서 질문드립니다!

0

494

2

reduce에 L.range를 사용할 때

0

549

2

[이해내용 공유] Lazy 에서 C.reduce가 병렬 효과를 내는 이유

3

775

2

제가 이해한 C.Reduce와 Reduce의 동작 차이 정리

2

836

3

go, pipe 함수 관련하여 질문 드립니다.

1

526

1

안녕하세요 강사님!

0

402

2

fxts에 go가 없는 이유?

0

862

1

비동기 관련 질문입니다!

0

480

1

질문 있습니다.

0

534

1