작성
·
208
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으로 작동합니다.