Mistrie's story

ES6 간단 정리 - Generator 본문

개발/ES6

ES6 간단 정리 - Generator

Mistrie 2021. 1. 6. 13:50

# 출처 - 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