자바스크립트 생성기 메서드

자바스크립트는 동적인 웹 개발을 지원하기 위한 강력한 언어입니다. 이 언어의 핵심 기능 중 하나는 생성기 메서드(generator method) 입니다. 생성기 메서드는 함수와 비슷하지만 실행 중간에 멈출 수 있는 특별한 종류의 함수입니다.

생성기 메서드는 함수 키워드(function) 뒤에 별표(*)를 사용하여 정의됩니다. 예를 들어, 다음은 간단한 생성기 메서드의 예입니다.

function* myGenerator() {
    yield 'Hello';
    yield 'World';
    yield '!';
}

위의 예시에서 myGenerator 함수는 yield 키워드를 통해 값을 반환하고 함수 실행을 일시적으로 중단할 수 있습니다. 호출된 생성기 메서드는 이터레이터(iterator)를 반환하며, next() 메서드를 사용하여 다음 값을 가져올 수 있습니다.

const generator = myGenerator();

console.log(generator.next()); // { value: 'Hello', done: false }
console.log(generator.next()); // { value: 'World', done: false }
console.log(generator.next()); // { value: '!', done: false }
console.log(generator.next()); // { value: undefined, done: true }

이와 같은 생성기 메서드의 장점은 데이터를 연속적으로 처리할 수 있다는 것입니다. 값을 한 번에 모두 반환하지 않고, 필요할 때마다 내보낼 수 있으므로 메모리 사용량을 줄이고 성능을 향상시킬 수 있습니다.

생성기 메서드의 활용 예시

생성기 메서드는 다양한 상황에서 유용하게 쓰일 수 있습니다. 몇 가지 예시를 살펴보겠습니다.

1. 반복 작업

생성기 메서드는 반복 작업을 실행할 때 매우 유용합니다. 예를 들어, 배열의 요소를 순회하며 특정 조건을 확인하는 경우 for…of 문과 함께 사용할 수 있습니다.

function* checkNumbers(numbers) {
    for (const num of numbers) {
        if (num % 2 == 0) {
            yield `${num}은(는) 짝수입니다.`;
        } else {
            yield `${num}은(는) 홀수입니다.`;
        }
    }
}

const numbers = [1, 2, 3, 4, 5];
const numberChecker = checkNumbers(numbers);

for (const result of numberChecker) {
    console.log(result);
}

2. 비동기 처리

생성기 메서드는 비동기 처리를 위한 일련의 단계를 구성하는 데 유용합니다. 각 단계마다 비동기 작업을 실행하고 결과를 반환할 수 있습니다.

function* fetchData() {
    const data = yield fetch('https://api.example.com/data');
    const processedData = yield processAsync(data);
    return processedData;
}

const dataGenerator = fetchData();
const fetchDataPromise = dataGenerator.next().value;

fetchDataPromise.then(response => {
    const processedDataPromise = dataGenerator.next(response).value;

    processedDataPromise.then(processedData => {
        const result = dataGenerator.next(processedData).value;
        console.log(result);
    });
});

위의 예시에서 fetchData 생성기 메서드는 데이터를 가져온 후, 가져온 데이터를 비동기적으로 처리한 다음 처리된 데이터를 반환합니다. 이러한 작업을 일반적인 비동기 코드보다 간결하고 가독성 있게 구현할 수 있습니다.

요약

자바스크립트 생성기 메서드는 실행 중간에 멈출 수 있는 함수로, 데이터를 연속적으로 처리할 수 있도록 합니다. 이를 통해 메모리 사용량과 성능을 개선할 수 있습니다. 생성기 메서드는 반복 작업이나 비동기 처리와 같은 다양한 상황에서 유용하게 활용될 수 있습니다.

생성기 메서드를 사용하여 더욱 간결하고 유지보수하기 쉬운 코드를 작성해보세요!