• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

reduce 함수에서 nop 처리

22.02.13 15:02 작성 조회수 188

0

안녕하세요 강사님 :)

reduce 함수에서 비동기 값 a를 처리하기 위해서 reduceF를 정의하시고 사용하셨는데 

함수 내부에서 풀어서 작성 했을시 정상적으로 동작하지 않더라구요 

어떤 문제가 있어서 정상적으로 동작하지 않는것인가요 ? 

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



reduce(add, [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)])
  .then(log);

답변 1

답변을 작성해보세요.

1

제 기억에 acc 가 변하기 때문일 것 같네요 :)