용어사전

이 문서는 리덕스 사가에 핵심 용어집입니다.

이펙트

이펙트는 사가의 미들웨어가 실행할 명령들을 포함하고 있는 평범한 자바스크립트 객체이다.

리덕스 사가 라이브러리를 통해 제공되는 팩토리 함수를 통해 이펙트를 만들 수 있다. 예를 들어 call(myfunc, 'arg1', 'arg2')를 사용하여 미들웨어가 myfunc('arg1', 'arg2')를 호출하도록 할 수 있으며, yield된 이펙트에 대한 결과는 제너레이터로 반환된다.

테스크

테스크는 백그라운드에서 실행되는 프로세스와 같다. 리덕스 사가 기반의 애플리케이션은 여러 테스크들을 병렬로 실행시킬 수 있다. fork 함수를 통해 이러한 테스크들을 생성할 수 있다.

function* saga() {
  ...
  const task = yield fork(otherSaga, ...args)
  ...
}

블로킹/논블로킹 호출

블로킹 호출은 Saga가 이펙트를 yield 하면 실행에 대한 결과를 기다렸다가 제네레이너 내부에서 다음의 명령어의 실행을 재개한다.

논블로킹 호출은 Saga가 이펙트를 yield한 이후 바로 실행을 재개한다는 것을 의미한다.

예를 들어,

function* saga() {
  yield take(ACTION)              // 블로킹: 액션을 기다린다. 
  yield call(ApiFn, ...args)      // 블로킹: ApiFn 함수를 기다린다.
  yield call(otherSaga, ...args)  // 블로킹: otherSaga 가 종료될때까지 기다린다.

  yield put(...)                   // 논블로킹: 내부 스케줄러에서 디스패치된다.

  const task = yield fork(otherSaga, ...args)  // 논블로킹: otherSaga 를 기다리지 않는다.
  yield cancel(task)                           // 논블로킹: 실행을 즉시 재개한다.
  // or
  yield join(task)                              // 블로킹: task가 종료될때까지 기다린다.
}

감시자/워커

각각 두 개의 Saga를 이용하여 제어 흐름을 구성하는 방법을 나타냅니다.

  • 감시자(The watcher): 디스패치된(dispatched) 액션을 관찰하고 모든 액션에 대해 워커(worker)를 포크합니다.
  • 워커(The worker): 액션을 처리하고 종료합니다.

예시

function* watcher() {
  while (true) {
    const action = yield take(ACTION)
    yield fork(worker, action.payload)
  }
}

function* worker(payload) {
  // ... do some stuff
}

results matching ""

    No results matching ""