-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
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으로 작동합니다.
답변을 작성해보세요.
0
0
easyiscat
질문자2022.07.31
코드 색상이 변하질 않네요,
결론은, reduceF 함수를 외부에서 구현했을 경우 인자값 acc과
reduceF를 사용하지않고 코드를 풀어서 작성했을때의 cur.value.then 내부에서 acc의 값이 다르게 동작하는 것 같아서 질문드립니다.
답변 2