코드 블록의 실행을 일시 중지했다가 필요한 시점에 재개할 수 있는 특수한 함수.
// 제너레이터 함수
const func2 = (a, b) => {
yield a + b;
yield 5;
return 7;
}
func2()
// 제너레이터 호출 ⬇️
// 일반 함수
const func = (a, b) => {
return a + b;
}
// 일반함수 호출 ⬇️
// 제너레이터 함수
const func2 = (a, b) => {
yield a + b;
yield 5;
return 7;
}
func2()
// 제너레이터 호출 ⬇️
// 제너레이터 함수
const func2 = (a, b) => {
try {
yield a + b;
yield 5;
return 7;
} catch (e) {
console.error(e);
}
}
console.log(func2(1, 2).next()); // { value: 3, done: false }
console.log(func2.return("end")); // { value: "end", done: true }
import func2
const arr = func2(1, 2);
for (let num of arr) {
console.log(num);
}
// 3
// 5
코드 작성하다보면 순서대로 실행하고 싶은데 자바스크립트 특성상 비동기식으로 작동하기 때문에 일부러 잡아줘야 하는 경우가 생깁니다. 대표적으로 async/await
이랑 Promise
가 있는데 이 두개의 밑바탕이 되는 제너레이터를 배워야 좀 더 이해가 수월할 것 같아서 알아봤습니다. 좀 더 나은 이해를 돕기위해 이터러블과 이터레이터를 심층적으로 알아봐야 겠습니다.