더북(TheBook)

제너레이터가 처음 만들어지면 함수의 흐름은 멈춰 있는 상태입니다. next()가 호출되면 다음 yield가 있는 곳까지 호출하고 다시 함수가 멈춥니다. 제너레이터 함수를 사용하면 함수를 도중에 멈출 수도 있고, 순차적으로 여러 값을 반환시킬 수도 있습니다. next 함수에 파라미터를 넣으면 제너레이터 함수에서 yield를 사용하여 해당 값을 조회할 수도 있습니다.

다음 예시 코드를 크롬 개발자 도구 콘솔에서 한번 입력해 보세요.

function* sumGenerator() {
console.log('sumGenerator 만들어졌습니다.');
let a = yield;
let b = yield;
yield a + b;
}

const sum = sumGenerator();
sum.next();
// sumGenerator 만들어졌습니다.
// {value: undefined, done: false}
sum.next(1);
// {value: undefined, done: false}
sum.next(2)
// {value: 3, done: false}
sum.next()
// {value: undefined, done: true}

redux-saga는 제너레이터 함수 문법을 기반으로 비동기 작업을 관리해 줍니다. 좀 더 이해하기 쉽게 설명하면, redux-saga는 우리가 디스패치하는 액션을 모니터링해서 그에 따라 필요한 작업을 따로 수행할 수 있는 미들웨어입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.