CHAPTER 12. 이터레이터와 제너레이터

  • ES6에 도입된 개념

  • 제너레이터 : 이터레이터에 의존하는 개념

  • 이터레이터 : 책갈피와 비슷함

    • ex) 배열 - 이터러블 객체

이터레이터의 특징

1) next() 메소드

  • 진행할 것이 있으면 done : false

  • 진행할 것이 없으면 value는 undefined, done은 true

  • 계속 next로 호출할 수 있으나 끝까지 진행하면 뒤로 돌어가서 다른 데이터를 제공할 수는 없음

  const book = [
    "Twinkle, twinkle, little star",
    "How I wonder what you are",
    "Up above the world so high",
    "Like a diamond in the sky",
    "Twinkle, twinkle little star",
    "How I wonder what you are"
  ];

  const it = book.values(); // 이터레이터 생성

  console.log(it.next()); // {value: "Twinkle, twinkle, little star", done: false}
  console.log(it.next()); // {value: "How I wonder what you are", done: false}
  console.log(it.next()); // {value: "Up above the world so high", done: false}
  console.log(it.next()); // {value: "Like a diamond in the sky", done: false}
  console.log(it.next()); // {value: "Twinkle, twinkle little star", done: false}
  console.log(it.next()); // {value: "How I wonder what you are", done: false}
  console.log(it.next()); // {value: undefined, done: true}
  console.log(it.next()); // {value: undefined, done: true}
  console.log(it.next()); // {value: undefined, done: true}
  console.log(it.next()); // {value: undefined, done: true}

2) 독립적

  • 새 이터레이터를 만들 때마다 처음에서 시작

  • 각각 다른 쇼로르 가리키는 이터레이터 여러 개를 동시에 사용할 수 있음

  const book = [
    "Twinkle, twinkle, little star",
    "How I wonder what you are",
    "Up above the world so high",
    "Like a diamond in the sky",
    "Twinkle, twinkle little star",
    "How I wonder what you are"
  ];

  // 이터레이터 생성
  const it1 = book.values();
  const it2 = book.values();

  // it1 으로 두 페이지 읽음
  console.log(it1.next()); // {value: "Twinkle, twinkle, little star", done: false}
  console.log(it1.next()); // {value: "How I wonder what you are", done: false}

  // it2 로 한 페이지 읽음
  console.log(it2.next()); // {value: "Twinkle, twinkle, little star", done: false}

  // it1 으로 한 페이지 더 읽음
  console.log(it1.next()); // {value: "Up above the world so high", done: false}

Last updated