2017-05-10 6 views
1

매 10 초마다 폴링 사가가 있습니다. UPDATE_DEPLOYMENT 요청이 만들어지면 실행중인 폴링 단계를 취소하고 상태를 지우고 새 폴링을 트리거합니다 (상태의 site_location 값이 UPDATE_DEPLOYMENT에 의해 업데이트되기 때문에 새 끝점을 폴링해야 함).취소 할 때 사가가 끝나지 않습니다.

이것은 제대로 작동하지 않는 것 같습니다. 현재 실행중인 폴링 대성공은 취소되지 않고 완료까지 실행되며 결국 실행되는 도중에 변경되는 site_location 상태로 인해 이전 url에만 존재하는 구성 요소를 요청하는 새로운 나머지 url을 시작하기 때문에 결국 실패를보고합니다. 여기

메인 무용담 (UPDATE_DEPLOYMENT 우리의 모든 GUI를 사용하는 표준 아키텍처를 유지 유지하기 위해 전송 될 때 다른 무용담이 SITE_LOCATION 상태를 업데이트 할 책임이있다)

export function* watchPollRequest() { 
    let pollTask; 

    while (true) { 
    const action = yield take([POLL, UPDATE_DEPLOYMENT, REPORT_SUCCESS, REPORT_FAILURE]); 

    switch (action.type) { 
     case REPORT_SUCCESS: 
     case REPORT_FAILURE: 
     pollTask = undefined; 
     break; 
     case UPDATE_DEPLOYMENT: 
     if (pollTask) { 
      cancel(pollTask); 
      pollTask = undefined; 
     } 
     yield put(clearSummaryData()); 
     yield put(poll()); 
     case POLL: 
     if (pollTask) { 
      // only need one poll at a time 
      break; 
      } 
      pollTask = yield fork(onPollRequest); 
      break; 
     } 
    } 
    } 

테스트는 상관없이 때를 보여줍니다 취소는 이전 설문 조사를 실행하여 취소하지 않고 완료까지 실행합니다.

답변

1

이 글을 작성한 후 직접 문제를 해결했습니다. 그것은 어리석은 오자였습니다. 나는 cancel 메쏘드 앞에서 내 수율을 놓쳤습니다.