12.2 제너레이터
이터레이터를 이용해 자신의 실행을 제어하는 함수
제너레이터의 새로운 개념
함수의 실행을 개별적 단계로 나눔으로써 함수의 실행을 제어
실행 중인 함수와 통신
제너레이터의 특징
제너레이터는 언제든 호출자에게 제어권을 넘길 수 있음
제너레이터는 호출한 즉시 실행되지 않음
대신 이터레이터를 반환, 이터레이터의 next메서드를 호출함에 따라 실행
제너레이터 만드는 방법
function 키워드 뒤에 애스터리스크(*) 붙여줌
return 외에 yield 키워드 사용 가능
[예제]
function* rainbow() { // 제너레이터 생성
yield 'red';
yield 'orange';
yield 'hot pink';
yield 'soft pink';
yield 'purple';
yield 'indigo';
yield 'green';
}
const it = rainbow(); // 제너레이터 호출
it.next(); // {value: "red", done: false}
it.next(); // {value: "orange", done: false}
it.next(); // {value: "hot pink", done: false}
it.next(); // {value: "soft pink", done: false}
it.next(); // {value: "purple", done: false}
it.next(); // {value: "indigo", done: false}
it.next(); // {value: "green", done: false}
for (let color of rainbow()) {
console.log(color); // value만 찍힘
}
Last updated