2017-05-12 4 views
2

ACTION_A와 ACTION_B가 모두 발송되기 전에 어떤 발송인지 먼저 모르는 상태에서 어떻게 기다려야합니까?먼저 어느 것이 발송되는지 모른 채 여러 작업을 수행하는 방법?

나는 const result = yield take([ACTION_A, ACTION_B])을 시도했지만 result은 첫 번째 발송 작업 인 반면 두 가지 작업이 모두 필요합니다.

const {a, b} = yield race({a: yield take(ACTION_A), b: yield take(ACTION_B)})을 시도했지만 a이 정의 된 경우 b이 아닙니다.

나는 어느 것이 먼저 오는 지 알지 못하기 때문에 단순히 yield take(ACTION_A); yield take(ACTION_B)을 기억할 수 없다는 것을 기억하십시오.

답변

4

도우미 all을 사용할 수 있습니다. all은 여러 효과를 병렬로 실행하고 모든 효과가 완료되기를 기다리는 미들웨어에 지시하는 효과 설명을 만듭니다.

코드는 다음과 같을 수 있습니다 :

function* mySaga() { 
    const [actionA, actionB] = yield all([ 
    take(ACTION_A), 
    take(ACTION_B), 
    ]) 
} 

내가 내 대답은 도움이되었습니다 바랍니다.