강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

바스니카님의 프로필 이미지
바스니카

작성한 질문수

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

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

유명함수에 대해 질문드립니다.

작성

·

276

0

go(
  1,
  (a) => a + 10,
  (a) => Promise.resolve(a + 100),
  (a) => a + 1000,
  log
);

 

위의 코드를 실행했을 때,

 

 return (function recur(acc) {
    for (const a of iter) {
      acc = f(acc, a);
      if (acc instanceof Promise) return acc.then(recur);
    }

    return acc;
  })(acc);

 

이렇게 작성하면 (a) => a+1000까지 동작하는데

 

return (function recur(acc) {
    for (const a of iter) {
      if (acc instanceof Promise) return acc.then(recur);
      acc = f(acc, a);
    }

    return acc;
  })(acc);

 

위와 같이 바꾸면 (a) => a+1000이 빠집니다.

어차피 Promise가 아닌 함수들은 하나의 콜스택에서 동작하니 두 문의 위치를 바꿔도 상관 없지 않나요?

답변 1

0

MDU 유인동님의 프로필 이미지
MDU 유인동
지식공유자

a 를 콘솔에 찍어보세요 :)

 

바스니카님의 프로필 이미지
바스니카

작성한 질문수

질문하기