제너레이터 함수는 호출하면 바로 코드가 실행되는 것은 아니고,
호출하면'이터레이터(iterator)객체'
를 반환
iterator반복자 객체를 반환 > 보통'it/iter'
라는 이름으로 받음
iterator객체는 next()메서드가 존재(제너레이터의 주요 메서드)
next()가 실행될 때 마다, 처음 나오는 yield부분까지 실행하고 멈춘다
yield에서 멈추면, yield뒤의 값을 반환
만약 yield뒤에 아무런 값이 없다면 undefined반환
next()메서드는 항상 value와 done 2개의 속성을 가진 객체를 반환
ex) {value: 1, done: false}
value는 yield뒤의 값, done은 함수 코드 실행이 끝났으면 true 반환
fucntion* test(){
yield 1;
yield 2;
yield 3;
return 4;
}
const iter = test();
console.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: 4, done: true}