일반 함수는 하나의 값 혹은 0개의 값만을 반환하지만 제너레이터를 사용하면 여러 개의 값을 필요에 따라 하나씩 반환(yield) 할 수 있다.
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
제니레이터 함수는 일반 함수와 다르게 호출을 해도 코드를 실행하지 않고, 대신 실행을 처리하는 '제너레이터 객체'가 반환된다.
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
let generator = generateSequence();
alert(generator); // [object Generator]
next()
는 제너레이터의 주요 메서드이다. next()
를 호출하면 가장 가까운 yield <value>
문을 만날 때 가지 실행이 지속된다. value가 생략 되어있다면 undefined
가 된다.
next()
는 항상 두 프로퍼티를 가진 객체를 반환한다.
true
, 아니라면 false
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
let generator = generateSequence();
let one = generator.next()
console.log(one); // {value:1, done: false}
let two = generator.next()
console.log(two); // {value:2, done: false}
let three = generator.next()
console.log(three); // {value:3, done: true}
let four = generator.next()
console.log(four); // {value: undefined, done: true}