for 와 while 동작 차이
225
작성한 질문수 1
const reduce = curry((f, acc, iter) => {
const head = iter => go1(take(1, iter), ([h]) => h);
if (!iter) return reduce(f, head(iter = acc[Symbol.iterator]()), iter);
iter = iter[Symbol.iterator]();
return go1(acc, function recur(acc) {
// WARN: 여기선 for 문을 쓰면 안됨
for (let a of iter) {
// Promise 확인용 함수 reduceF 를 이용
acc = reduceF(acc, a, f);
if (acc instanceof Promise) return acc.then(recur);
}
return acc;
});
})
여기서 for 와 while 의 동작 차이가 발생합니다.
기존 recur 함수 안의 while 문을 for 로 대체하였을때 두번째 recur 실행 부터 iterator 가 정상적으로 실행되지 않고 종료가 되버립니다.
이는 Promise 로 변경하였을때만 발생하였습니다.
go([1, 2, 3, 4, 5, 6],
L.map(a => a * a),
L.filter(a => a % 2),
reduce(add),
console.log
) // 정상 동작
혹시여기서 for 와 while 의 차이가 발생하는 이유를 설명해주실 수 있을까요?
답변 1
프론트엔드 실무에서 어떤때에 쓰이는지 궁금합니다
1
111
1
함수형 프로그래밍 심화 강의 자료 추천
0
72
2
함수형 자바스크립트 프로그래밍 책
0
54
1
filter가 아무것도 걸러내지 못하는 경우
0
114
1
take 함수의 성능적면에서의 이점
1
463
1
pipe함수
1
531
1
Identity 함수
0
450
1
함수형 프로그래밍이란
0
832
1
reduce 예제 코드 제안!
0
405
1
fxts를 배워보려고 합니다.
1
537
1
flatMap 관련 질문드립니다~
1
444
1
다용성이 높은 L.flatMap
0
358
1
변수에 재 할당 금지~
0
540
1
DevTools라고 옆에 결과 확인하는거 어떻게 하나요?
0
483
2
소요시간에 관해서 질문드립니다
1
458
1
join에 대한 내용이 궁금증이 해결되지 않아서 질문드립니다!
0
465
2
reduce에 L.range를 사용할 때
0
527
2
[이해내용 공유] Lazy 에서 C.reduce가 병렬 효과를 내는 이유
3
739
2
제가 이해한 C.Reduce와 Reduce의 동작 차이 정리
2
787
3
go, pipe 함수 관련하여 질문 드립니다.
1
499
1
안녕하세요 강사님!
0
380
2
fxts에 go가 없는 이유?
0
840
1
비동기 관련 질문입니다!
0
462
1
질문 있습니다.
0
517
1





