<aside> 🍦 Generator에 대해서 공부하면서 기록합니다.
</aside>
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 }
*/
done
속성값은 true를 가지게 된다.