<aside> 🍦 Generator에 대해서 공부하면서 기록합니다.

</aside>

Generator

Redux-Saga 패키지를 공부하는 중에 반드시 알아야 하는 Generator 개념이 있어서 공부하고 기록한다. 비교적 최신 문법이라 막 접하게 된 내용이다. 생소하지만 Redux-Saga를 정말 잘 사용하고 싶어서 따로 공부한다.

<aside> 💡 본격적인 generator 객체와 generator function 을 알아보기에 앞서서 iterator, iterable의 개념을 정리한다.

</aside>

반복자(iterator)의 조건을 가진 객체

반복 가능한(iterable) 객체의 조건

갑자기 왜 iterable한 객체와 iterator라고 하는 객체 생성 조건을 먼저 공부했는가 하면, generator가 iterator 이면서 iterable 한 속성을 지녔기 때문이다. 어렵다. 바로 코드를 확인하자.

function* f1() {
  console.log("f1-1");
  yield 10; 
  console.log("f1-2");
  yield 20; 
  console.log("f1-3");
  return "finished";
}

const gen1 = f1();

위의 함수 정의에서 * 기호가 들어간 것이 보인다. function으로 함수를 정의할 때 *를 붙이면 generator function을 정의한다는 의미이다.

console.log(gen.next());
console.log(gen.next());
console.log(gen.next());

/*
 
f1-1
{ value: 10, done: false }

f1-2
{ value: 20, done: false }

f1-3
{ value: 'finished', done: true }

*/