강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của easyiscat2273
easyiscat2273

câu hỏi đã được viết

Lập trình hàm và JavaScript ES6+

không hỗ trợ giảm

reduceF 함수 내부 acc에 대하여

Viết

·

294

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

javascript함수형-프로그래밍

Câu trả lời 2

0

mduniv님의 프로필 이미지
mduniv
Người chia sẻ kiến thức

힌트는 클로저 :)

0

easyiscat님의 프로필 이미지
easyiscat
Người đặt câu hỏi

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

 

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

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

Hình ảnh hồ sơ của easyiscat2273
easyiscat2273

câu hỏi đã được viết

Đặt câu hỏi