FrontEnd
[JavaScript] 제너레이터(generator)
mingg123
2021. 1. 12. 15:37
제너레이터는 함수의 실행을 중간에 멈추고 재개할 수 있는 독특한 기능
ex)
function* f1() {
yield 10;
yield 20;
return 'finished';
}
const gen = f1();
yield 함수의 실행을 멈출 수 있다.
제너레이터 객체는 next, return, throw메서드를 가지고 있다.
지연 평가(lazy evaluation) 필요한 순간에만 연산하는 방식
제너레이터 함수에서 다른 제너레이터 함수를 호출할 때는 yield* 키워드를 사용
function* g1() {
yield 2;
yield 3;
}
function* g2() {
yield 1;
yield* g1();
yield 4;
}
console.log(...g2()) // 1 2 3 4
yield* 키워드 오른쪽에는 제너레이터 객체뿐만 아니라 반복 가능한 모든 객체가 올 수 있다.
멀티태스킹은 여러 개의 태스크를 실행할 때 하나의 태스크가 종료되기 전에 멈추고 다른 테스크가 실행되는 것을 말함