• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

for of vs while

20.11.24 10:52 작성 조회수 217

2

안녕하세요.

코드를 작성하면서 실습하는 중입니다. 실습할 때, for of 구문을 이용해서 코드를 작성했는데 이번 take 함수는 의도에 맞게 동작하지 않더라고요. reduce 함수는 for of 구문을 작성해도 잘 작동했는데 이유가 뭘까요?

const go1 = (a, f) => a instanceof Promise ? a.then(f) : f(a);
const reduce = curry((f, acc, iter) => {
if (!iter) {
iter = acc[Symbol.iterator]();
acc = iter.next().value;
}
return go1(acc, function recur(acc) {
for (const e of iter) {
acc = f(acc, e);
if (acc instanceof Promise) return acc.then(recur);
}
return acc;
});
});
const take = curry((l, iter) => {
let res = [];
return function recur() {
// if(e instanceof Promise) return .then(e => {...}) closure에 담긴 iter 상태가 closed로 변경
// for (const e of iter) {
// if(e instanceof Promise) return .then(e => {...}) 문을 만나도 iter가 closed가 되지 않음
let cur;
while (!(cur = iter.next()).done) {
const e = cur.value;
if (e instanceof Promise) return e.then(e => {
if (res.length == l) return res;
res.push(e);
return recur();
})
if (res.length == l) return res;
res.push(e);
}
return res;
}();
});

답변 3

·

답변을 작성해보세요.

2

https://www.inflearn.com/questions/17067

이 질문이 같은 질문인거 같아요. :)

0

와 빠른 답변 감사합니다. 잘 읽어볼게요~

0

들여쓰기가 적용이 안되네요 ㅜㅜ 번거롭겠지만 코드 보기 힘드시면 IDE에 복사 붙여넣기 하면 좋을것 같아요~