<aside> ❗ 특정한 액션 타입이 전달될 때, 사이드 이펙트 없이 비동기 작업을 실행하기 위한 미들웨어
</aside>
function* generatorFunction() {
console.log('generator 시작')
yield 1
let a = yield
console.log('a 값을 받음')
}
npm i redux-saga
import { delay, put, call, takeEvery, takeLatest, all } from 'redux-saga/effects'
function* rootSaga() {
yield <u>**all**</u>([fork(takeSaga), ...]) // 모든 제네레이터 함수 동시 실행
}
const sagaMiddleware = createSagaMiddleware() // 사가 미들웨어 생성
const store = createStore(rootReducer, applyMiddleware(sagaMiddleware)) // 사가 미들웨어 등록
sagaMiddleware.run(rootSaga) // 루트 사가 실행
// 액션을 지켜보는 사가 함수에 의해 실행되는 사가 함수
function<u>*****</u> saga(action) {
yield <u>**delay**</u>(1000)
yield <u>**put**</u>({ type: 'INCREASE' })
const data = yield <u>**call**</u>(No 제네레이터 함수, action.data)
yield <u>**fork**</u>(제네레이터 함수)
}
// 액션을 지켜보는 사가 함수
function<u>*****</u> takeSaga() {
yield <u>**take**</u>(A, saga)
yield <u>**takeEvery**</u>(A, saga)
yield <u>**takeLatest**</u>(A, saga)
}