Generator 함수는 사용자의 요구에 따라 다른 시간 간격으로 여러 값을 반환할 수 있다.
// Generator Example
function* sayNumbers() { // 제네레이터 함수 sayNumers 정의
yield 1; // 각 호출 시 1,2,3이 차례로 반환됨
yield 2;
yield 3;
}
const number = sayNumbers(); // 제네레이터 객체 생성, number 변수에 할당
// number.next() 호출로 제네레이터 함수가 다음 yield 반환
console.log(number.next().value); //1
console.log(number.next().value); //2
console.log(number.next().value); //3
console.log(number.next().value); //undefined
Generator 객체가 자신의 이터레이터로서 기능한다.
generator
는 generator[Symbol.iterator]()
의 호출 결과와 동일한 객체이다. function* generatorFunction() {
yield 1;
}
const generator = generatorFunction();
// 제네레이터 객체와 이터레이터 비교
console.log(generator === generator[Symbol.iterator]()); //true