인프런 커뮤니티 질문&답변

iternity님의 프로필 이미지
iternity

작성한 질문수

함수형 프로그래밍과 JavaScript ES6+

Kleisli Composition - L.filter, filter, nop, take

take 내부의 이터레이터 클로저에 대해

작성

·

397

2

while (!(cur = iter.next()).done) {
let a = cur.value;

를 

for (const a of iter) {

로 바꾸면 비동기상황에서 iter를 기억하지 못해서 하나만 take하게 되더라구요.

두 문법이 같은 걸로 알고있는데 for of 내부의 이터레이터는 클로저로 사용될수없나요? 이런경우엔 while밖에 쓸수없는건가요?

클로저로 사용되려면 함수내부에서 표현식 안에 갖혀있어야된다는 조건? 같은게 있나요?

답변 4

3

iternity님의 프로필 이미지
iternity
질문자

아ㅋㅋ for of문은 루프 중간에 끊기는 경우에 이터레이터의 리턴메소드를 강제로 실행시켜버리는 구문이 있었네요 

처음 알았습니다  

답변감사합니다 

3

유인동님의 프로필 이미지
유인동
지식공유자

0

답변을 봐도 잘 이해가 되지 않아요 ㅠㅠ!
이터레이터에 리턴 메서드가 있나요..?

유인동님의 프로필 이미지
유인동
지식공유자

제너레이터로 생성된 이터레이터에 있습니다 :)

아 ! 필터 함수에서 만들어진 이터레이터가 reduce나 take 함수로 넘어오는거고 for...of 문을 순회하다가 중간에 재귀함수를 호출하면 제너레이터로 생성된 이터레이터에 리턴 메서드를 호출하게 되는걸까요 ?!

답변 감사합니다!! 🥹

0

유인동님의 프로필 이미지
유인동
지식공유자

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Generator/return

이걸 보신 후 

babel에서 for...of 를 테스트해보세요. :)

iternity님의 프로필 이미지
iternity

작성한 질문수

질문하기