ES6

11. generators 생성기

으누아빠 2020. 7. 15. 16:37
반응형

generators 생성기

  • 최초로 호출될 때, 함수 내부의 어떠한 코드도 실행되지 않고, 대신 생성자라고 불리는 반복자 타입을 반환합니다.
  • 생성자의 next 메소드를 호출하면 yield 키워드를 만날 때까지 실행후 일시 중지
  • 다시 next 메소드가 호출되면 그다음부터 실행후 다음번 yield 키워드를 만날 때까지 실행후 일시 중지
  • 문법
function* gen() {
    yield 1;
    yield 2;
    yield 3;
}

var g = gen(); // "Generator { }"
  • .next() yield 표현을 통해 yield된 값을 반환
  • .return() 주어진 값을 반환하고 생성기를 종료
  • .throw() 생성기로 에러를 throw
function* g1() {
    console.log('Hello');
    yield 'Yield 1 Ran..';
    console.log('World');
    yield 'Yield 2 Ran..';

    return 'returned';
}

var g = g1();

console.log(g.next().value);
// 결과값
// Hello
// Yield 1 Ran..

// console.log(g.next().value);
// // 결과값
// // World
// // Yield 2 Ran..

// console.log(g.next().value);
// // 결과값 returned

for (let val of g) {
    console.log(val);
}
// 결과값
// Hello
// Yield 1 Ran..
// World
// Yield 2 Ran..

'ES6' 카테고리의 다른 글

String 내장객체 활용  (0) 2021.03.23
array 와 arrow function 활용  (0) 2021.03.23
10. async 와 await  (0) 2020.07.15
9. promise  (0) 2020.07.14
8. Set, Map, WeakSet, WeakMap  (0) 2020.07.09