Mistrie's story
ES6 간단 정리 - Generator 본문
# 출처 - poiemaweb.com/es6-generator을 공부하면서 간단히 정리함!
- ES6에서 도입된 Generator 함수는 iterable을 생성하는 함수임.
- 또한 generator 함수는 비동기 처리에 유용하게 사용됨
- generator 함수는 일반 함수와는 다른 독특한 동작을 함.
- 모든 코드 블록을 한번에 실행하지 않고, 함수 코드 블록의 실행을 일시 중지했다가
필요한 시점에 재시작할 수 있음!
function* counter() {
console.log('first call');
yield 1; // 여기까지만 실행하고 중단됨.
console.log('second call');
yield 2; // 두번째 호출 시 여기까지만 실행되고 중단됨.
console.log('third call');
}
const generator = counter();
console.log(Symbol.iterator in generator); // true
console.log(generator.next()); // first call, {value: 1, done: false}
console.log(generator.next()); // second call, {value: 2, done: false}
console.log(generator.next()); // third call, {value: undefined, done: true}
- generator는 iterable 객체이면서 동시에 iterator 인 객체임
- generator 함수가 생성한 generator는 Symbol.iterator 메서드를 소유한 iterable 임
- 또한 next 메서드를 소유하여 next 를 호출하면 {value, done}을 갖는 iterator result 객체를 반환하는 iterator 임!
Generator 함수의 문법
- 제네레이터 함수는 function* 키워드로 선언하며, 하나 이상의 yield문을 포함함.
- 제네레이터 함수가 생성한 제네레이터 객체는 next 메소드를 수행 시 yield 문까지 실행되고 일시 중단됨.
이후 next 메서드를 호출하면 중단된 위치에서 다시 실행하여 다음 만나는 yield 문까지 실행되고 또다시 중단됨.
'개발 > ES6' 카테고리의 다른 글
| ES6 간단 정리 - async / await (0) | 2021.01.06 |
|---|---|
| ES6 간단 정리 - Iterable & iterator... iteration protocol (0) | 2021.01.06 |
| ES6 간단 정리 - Symbol (0) | 2021.01.06 |
| ES6 간단정리 - Promise (0) | 2021.01.06 |
| ES6 간단정리 - Destructuring (0) | 2021.01.05 |