이터레이터를 배열에 담는 의미?
433
16 asked
병렬 평가를 할 때 이터러블/이터레이터를 전개 연산자로 풀어서 배열 안에 담아 reduce함수에 전달해주던데요, 이렇게 했을 때 무슨 원리로 병렬 평가가 되는 건지 모르겠습니다 ㅠㅠ 배열도 결국 next()로 순회하는 이터레이터의 한 종류 아닌가요...? 저렇게 했을 때 Promise.all을 해주는 효과가 나나요?
Answer 4
11
function* f() {
yield console.log(1);
yield console.log(2);
yield console.log(3);
}
const iter = f(); // 아무일도 일어나지 않음
iter.next(); // 콘솔에 1 찍힘
[...iter]; // 콘솔에 2, 3 찍힘
위 예제를 보시면 도움이 되실거 같아요.
결국 [...iter] 를 통해 [Promise, Promise, Promise] 로 모두 출발시키는게 되는 것이죠.
위 예제가 console.log 대신 비동기가 일어나는 함수였다고 치면 f() 를 했을때까지는 아무일도 안일어나는거고 next()를 모두 해놔야 모두 출발한 상태가 될테니까요 :)
7
아... 강의에서 저렇게 평가된다고 보여주셨는데 연결지어서 생각을 못했네요 ㅠㅠ
그냥 이터레이터를 전달하면 reduce에서 next로 순회하면서 하나씩 프로미스가 출발되고, 나중에 돌아온 값을 역시 reduce가 합산하는 것이고,
전개 연산자로 평가된 프로미스들을 배열에 담으면 프로미스들은 이미 출발이 된 상태고, reduce는 돌아온 값들을 합산만 해주면 되는 것이죠? 그리고 순차적으로 출발한 것이 아니라 동시에 출발한 것이기에, 모두 돌아올 때까지 걸리는 시간도 훨씬 줄어들고요
1
프론트엔드 실무에서 어떤때에 쓰이는지 궁금합니다
1
111
1
함수형 프로그래밍 심화 강의 자료 추천
0
72
2
함수형 자바스크립트 프로그래밍 책
0
52
1
filter가 아무것도 걸러내지 못하는 경우
0
112
1
take 함수의 성능적면에서의 이점
1
463
1
pipe함수
1
530
1
Identity 함수
0
450
1
함수형 프로그래밍이란
0
831
1
reduce 예제 코드 제안!
0
403
1
fxts를 배워보려고 합니다.
1
537
1
flatMap 관련 질문드립니다~
1
444
1
다용성이 높은 L.flatMap
0
357
1
변수에 재 할당 금지~
0
540
1
DevTools라고 옆에 결과 확인하는거 어떻게 하나요?
0
483
2
소요시간에 관해서 질문드립니다
1
457
1
join에 대한 내용이 궁금증이 해결되지 않아서 질문드립니다!
0
465
2
reduce에 L.range를 사용할 때
0
526
2
[이해내용 공유] Lazy 에서 C.reduce가 병렬 효과를 내는 이유
3
738
2
제가 이해한 C.Reduce와 Reduce의 동작 차이 정리
2
787
3
go, pipe 함수 관련하여 질문 드립니다.
1
498
1
안녕하세요 강사님!
0
379
2
fxts에 go가 없는 이유?
0
839
1
비동기 관련 질문입니다!
0
460
1
질문 있습니다.
0
515
1

