제너레이터(Generator)란?
- 함수의 실행을 중간에 멈추고 재개할 수 있는 기능
- 실행을 멈췄을때, 값을 전달할 수 있다. 때문에 반복문에서 제너레이터가 전달하는 값을 하나씩 꺼내서 사용가능
제너레이터 함수의 사용방법
- 제너레이터 함수를 만들때는 function* 키워드를 사용 한다.
- 제너레이터가 처음 만들어지면 함수의 흐름은 멈춰 있는 상태
next()
가 호출되면 다음yield
가 있는 곳까지 호출하고 다시 함수가 멈춘다.- 제너레이터 함수의 호출이 완료되면,
done: true
가 같이 리턴된다.
일반적인 방법
- 순차적으로 값을 전달하는 예시
function* testGenerator() { //function* 키워드를 사용
console.log('제너레이터')
yield 1;
console.log('사용법을')
yield 2;
console.log('공부하는중')
yield 3;
return "입니다";
}
const generator = testGenerator();
generator.next();
// 제너레이터
// {value: 1, done: false}
generator.next();
// 사용법을
// {value: 2, done: false}
generator.next();
// 공부하는중
// {value: 3, done: false}
generator.next();
// {value: '입니다', done: true}
크롬의 개발자도구 콘솔에서 사용하는 모습
값을 파라미터로 전달 및 조회
next()
메서드를 이용해서 파라미터로 값을 넘겨 줄 수도 있다.
function* sumGenerator() {
console.log('sumGenerator생성')
let a = yield ;
let b = yield ;
yield a + b;
}
const sum = sumGenerator();
sum.next();
// sumGenerator생성
// {value: undefined, done: false}
sum.next(1);
// {value: undefined, done: false}
sum.next(2);
// {value: 3, done: false}
sum.next();
// {value: undefined done: true}
반응형