- generator는 yield라는 중단점이 있는 함수이다.
- generator는 next와 함께 사용한다.
- generator가 호출될 때 yield 앞에서 멈추고, 다음 호출 시 그 다음부터 실행된다.
- 중단점인 yield 뒤에 값을 넣어주면 value 값으로 리턴된다.
const gen = function* () {
console.log(1);
yield;
console.log(2);
yield;
console.log(3);
yield 4;
};
const generator = gen();
generator.next();
-> 1
-> output: {value: undefined, done: false}
generator.next();
-> 2
-> output: {value: undefined, done: false}
// 중단점인 yield 뒤에 값을 넣어주면 value 값으로 리턴된다.
generator.next();
-> 3
-> output: {value: 4, done: false}
generator.next();
-> output: {value: undefined, done: true}
generator함수를 통해 평소 금기시 되는 무한함수를 쓸 수 있다.
let i = 0;
const gen = generator*() {
while(true) {
yield i++;
}
}
gen().next();
-> output: {value: 0, done: false}
gen().next();
-> output: {value: 1, done: false}
gen().next();
-> output: {value: 2, done: false}
.
.
.