• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

reduceF 함수 내부 acc에 대하여

22.07.31 20:55 작성 조회수 138

0

const check = (acc, f) => (acc instanceof Promise ? acc.then(f) : f(acc));

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

const reduce = curry((f, acc, iter) => {
  if (!iter) {
    iter = acc[Symbol.iterator]();
    acc = iter.next().value;
  }
  return check(acc, function recur(acc) {
    let cur;
    while (!(cur = iter.next()).done) {
      // acc = reduceF(acc, cur.value, f);
      const item = cur.value;
      acc =
        item instanceof Promise ? item.then((a) => f(acc, a)) : f(acc, item);
      if (acc instanceof Promise) {
        return acc.then(recur);
      }
    }
    return acc;
  });
});

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

 

위 코드와 같이 reduce 함수 recur 내부에서

acc = reduceF(acc, cur.value, f); 에서

reduceF 함수에서 acc과

acc = item instanceof Promise ? item.then((a) => f(acc, a)) : f(acc, item); 에서

 

item.then 내부에서 acc이 다르게 동작하는 것 같은데

이유를 알 수 있을까요?

 

reduceF에서 acc은 Promise가 아니지만,

item.then 내부에서 acc은 pending으로 작동합니다.

답변 2

·

답변을 작성해보세요.

0

힌트는 클로저 :)

0

easyiscat님의 프로필

easyiscat

질문자

2022.07.31

코드 색상이 변하질 않네요,

 

결론은, reduceF 함수를 외부에서 구현했을 경우 인자값 acc과

reduceF를 사용하지않고 코드를 풀어서 작성했을때의 cur.value.then 내부에서 acc의 값이 다르게 동작하는 것 같아서 질문드립니다.