ES6에서 도입된 제너레이터(generator)는 코드 블록의 실행을 일시 중지 했다가 필요한 시점에 재개할 수 있는 특수한 함수
입니다.
async/await의 내부는 제너레이터와 프로미스로 이루어져있다.
일반 함수
호출자(caller)가 일반 함수를 호출하면, 제어권이 호출된 함수에게 넘어가며 함수 코드를 일괄 실행
한다.제너레이터 함수
호출자는 제너레이터 호출을 제어할 수 있다. 다시 말해 호출자가 함수 실행을 중지시키거나 재개
시킬 수 있다.일반 함수
는 이미 실행이 되는 동안에는 함수 외부에서 받은 값(매개변수)을 내부로 전달해 함수 상태를 변경할 수가 없다.
제너레이터 함수
는 호출자와 양방향
으로 상태를 주고 받을 수 있다.제너레이터 함수
를 호출하면 함수 코드를 실행하는 것이 아니라, 이터러블
이면서 동시에 이터레이터
인 제너레이터 객체를 반환한다.이터레이터
이기도 하므로 별도로 해당 메서드를 통해 이터레이터를 생성할 필요는 없다.