• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

19.11.27 13:52 작성 조회수 247

2

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

를 

for (const a of iter) {

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

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

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

답변 4

·

답변을 작성해보세요.

3

iternity님의 프로필

iternity

질문자

2019.11.28

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

처음 알았습니다  

답변감사합니다 

3

0

가디님의 프로필

가디

2022.07.05

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

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

가디님의 프로필

가디

2022.07.05

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

답변 감사합니다!! 🥹

0

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

이걸 보신 후 

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