제너레이터(Generator) 함수

Lee Soyeon·2022년 3월 25일
0

JavaScript

목록 보기
3/3

제너레이터(Generator)

  • 여러개의 값을 반환하는 함수
  • 제너레이터 함수 외부에서 제너레이터 함수가 실행되는 중간에
    특정 부분(yield)에서 멈추고, 제어권을 호출자에게 양도(yield)하고,
    값을 외부에서 받아 하나씩 반환
  • 표현방법: function*
  • 화살표함수는 쓸 수 없음

제너레이터 함수는 호출하면 바로 코드가 실행되는 것은 아니고,
호출하면 '이터레이터(iterator)객체'를 반환
iterator반복자 객체를 반환 > 보통 'it/iter'라는 이름으로 받음
iterator객체는 next()메서드가 존재(제너레이터의 주요 메서드)
next()가 실행될 때 마다, 처음 나오는 yield부분까지 실행하고 멈춘다
yield에서 멈추면, yield뒤의 값을 반환
만약 yield뒤에 아무런 값이 없다면 undefined반환
next()메서드는 항상 value와 done 2개의 속성을 가진 객체를 반환
ex) {value: 1, done: false}
value는 yield뒤의 값, done은 함수 코드 실행이 끝났으면 true 반환

fucntion* test(){
  yield 1;
  yield 2;
  yield 3;
  	return 4;
}

const iter = test();

console.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: 4, done: true}
profile
프론트엔드 개발자가 되기 위해 공부하고 있습니다.

0개의 댓글