2017-05-10 2 views
1

私は10秒ごとに実行されるポーリングサガを持っています。 UPDATE_DEPLOYMENT要求が行われると、実行中のポーリング・サガを取り消し、状態をクリアして新しいポーリングをトリガーします(stateのsite_location値もUPDATE_DEPLOYMENTによって更新されるため、新しい休止エンドポイントをポーリングする必要があります)。キャンセル時に佐賀は終了しません

これは機能していないようです。現在実行中のポーリング・サガはキャンセルされずに完了まで実行され、最終的に失敗を報告します。これは、site_location状態が途中で変更されたために古い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

私はこれを書いた後で私自身の問題を解決しました。それは愚かなタイプミスでした、私はキャンセルメソッドの前に私の歩留まりが不足しています。

関連する問題