delay , call , put , all , takeEvery, takeLatest
Promise
객체를 리턴한다.delay(1000)
-> 1초 기다리기
dispatch
하도록 한다.put({type:"INCREMENT"})
-> INCREMENT action을 dispatch한다.
takeEvery(INCREASE_ASYNC, increaseSaga)
-> 들어오는 모든 INCREASE_ASYNC 액션에 대해 increaseSaga 함수 실행
takeLatest(DECREASE_ASYNC, decreaseSaga)
-> 들어오는 모든 DECREASE_ASYNC 액션에 대해서 기존에 진행 중이던 작업이 있다면 취소 처리하고 가장 마지막으로 실행된 작어베 대해서만 decreaseSaga 함수 실행
call(delay, 1000)
-> delay(1000)함수를 call함수를 사용해서 이렇게 쓸 수도 있다.
call
과 put
의 다른 점은 put
은 스토어에 인자로 들어온 action
을 dispatch
하고 call
인 경우에는 주어진 함수를 실행하게 되는 것이다.
all
함수를 사용해서 제너레이터 함수를 배열의 형태로 인자로 넣어주면, 제너레이터 함수들이 병행적으로 동시에 실행되고, 전부 resolve 될 때까지 기다린다. Promise.all
과 비슷하다고 보면된다.yield all([testSaga1(), testSaga2()])
-> testSaga1()과 testSaga2()가 동시에 실행되고, 모두 resolve 될 때까지 기다린다.