[JavaScript] 제너레이터(Generator)

bshunter·2023년 7월 26일
0

JavaScript 제네레이터는 값을 생성하고 반환하는 함수입니다. 제네레이터는 일반 함수와 달리 한 번에 한 개의 값만 생성하고 반환합니다. 제네레이터는 반복문과 함께 사용하면 효율적으로 값을 생성하고 반환할 수 있습니다.

제네레이터를 만드는 방법

제네레이터 함수를 호출하면 제네레이터 객체가 반환됩니다. 제네레이터 객체는 next() 메서드를 가지고 있습니다. next() 메서드는 제네레이터 함수의 다음 값을 반환합니다.

제네레이터 객체의 next() 메서드를 사용하여 제네레이터 함수의 값을 순차적으로 가져올 수 있습니다.

다음은 1부터 10까지의 값을 생성하는 제네레이터 함수입니다.

function* generator() {
  for (let i = 1; i <= 10; i++) {
    yield i;
  }
}

이 제네레이터 함수를 호출하면 다음과 같은 결과가 나옵니다.

1
2
3
4
5
6
7
8
9
10

제네레이터는 반복문과 함께 사용하면 효율적으로 값을 생성하고 반환할 수 있습니다. 예시 코드를 보시겠습니다.,

1부터 10까지의 값을 출력하는 코드입니다.

for (let i of generator()) {
  console.log(i);
}

이 코드 또한 다음과 같은 결과를 출력합니다.

1
2
3
4
5
6
7
8
9
10

제네레이터는 비동기 프로그래밍에도 유용하게 사용할 수 있습니다. 예를 들어, 다음은 1초마다 "Hello, world!"를 출력하는 제네레이터 함수입니다.

function* generator() {
  while (true) {
    yield new Promise(resolve => {
      setTimeout(() => {
        resolve("Hello, world!");
      }, 1000);
    });
  }
}

이 제네레이터 함수를 for...await of 구문을 사용하여 반복하면 다음과 같은 결과가 나옵니다.

"Hello, world!"
"Hello, world!"
"Hello, world!"
"Hello, world!"
"Hello, world!"
"Hello, world!"
"Hello, world!"
"Hello, world!"
"Hello, world!"

제네레이터는 JavaScript 프로그래밍에서 매우 유용한 도구입니다. 제네레이터를 사용하면 효율적으로 값을 생성하고 반환할 수 있으며, 비동기 프로그래밍에도 유용하게 사용할 수 있습니다.

0개의 댓글