일반 함수는 하나의 값만을 반환한다.
하지만 제너레이터(generator)를 사용하면 여러 개의 값을 필요에 따라 반환 할 수 있다.
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
next()는 제너레이터의 주요 메서드이다.
호출하면 가장 가까운 yield 문을 만날 때까지 실행이 지속된다.
let generator = generateSequence();
let one = generator.next();
alert(JSON.stringify(one)); // {value: 1, done: false}
제너레이터와 이터러블
제너레이터는 이터러블이다 따라서 for...of 반복문을 사용 할 수 있다.
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
let generator = generateSequence();
for(let value of generator) {
alert(value); // 1, 2가 출력됨
}
주의 할 점은 1과 2만 출력되고 3은 출력되지 않는다.
done: ture 일 때 마지막 밸류를 무시하기 때문이다