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

박재영님의 프로필 이미지

작성한 질문수

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

reduce 함수에서 nop 처리

해결된 질문

22.02.13 15:02 작성

·

238

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

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

2022. 02. 13. 22:48

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