제너레이터 함수는 일반 함수와 비슷하지만, yield 키워드를 사용하여 값을 반환할 수 있다. 제너레이터 함수는 값을 한 번에 반환하는 대신, 값을 순차적으로 반환하다. 이 특징 때문에 제너레이터 함수는 비동기 작업을 처리하는 데 유용하다.
또한 일반 함수와 달리 중간에 일시 중지했다가 다시 시작할 수 있는 기능을 가지고 있다.
예시
function* numbers() {
for (let i = 1; i <= 10; i++) {
yield i;
}
}
const nums = numbers();
for (let num of nums) {
console.log(num);
}
또한 제너레이터 함수는 다음과 같은 두 가지 상태를 가질 수 있다.
yield
키워드를 만나면 일시 중지된다.yield
키워드에서 다음 값을 생성하면 다시 시작된다.제너레이터 함수는 next() 메서드를 사용하여 다음 값을 가져올 수 있다.
function* numbers() {
for (let i = 1; i <= 10; i++) {
yield i;
}
}
const nums = numbers();
// 다음 값을 가져옴
const num1 = nums.next();
// 다음 값을 가져옴
const num2 = nums.next();