Comment puis-je annuler ou mettre à jour une demande de vote de la saga avec un même appel d'action

voix
3

Je suis api de vote avec retard et d'annulation en utilisant la condition de course.

Ce que je veux obtenir est quand ma page rend, je veux commencer l'interrogation des scores et sur une action que je vais appeler même interrogation (même api) avec d'autres paramètres de requête afin que je veux juste mettre à jour le même sondage avec de nouveaux params.

pour que je l'ai fait quelque chose comme ça.

export function* pollScoreSnippets() {
  while (true) {
    try {
      const { data } = yield call(() => request(apis.GET_SCORE_API));
      yield put({
        type: types.DASHBOARD_DATA_FETCHED,
        payload: {
          type: ['scores'],
          data: {
            scores: { values: data.data },
          },
        },
      });
      yield call(delay, SCORE_SNIPPET_POLLING_DELAY);
    } catch (err) {
      yield put({
        type: types.DASHBOARD_DATA_FETCHING_ERROR,
        payload: {
          error: err.response.data,
        },
      });
      yield call(delay, SCORE_SNIPPET_POLLING_DELAY + 10);
    }
  }
}

export function* watchPollSaga() {
  while (true) {
    // console.log('watching');
    yield take(types.POLL_SCORE_SNIPPETS);
    yield race([call(dashGenerators.pollScoreSnippets), take(types.STOP_POLLING_SCORE_SNIPPETS)]);
  }
}

Qui travaille pour moi, mais avec cette approche, je dois appeler annuler l'action puis de nouveau même action pour redémarrer à nouveau vote.

Est-il possible que si je vais appeler même action et soit il mettra à jour la demande de vote en cours ou annuler ou redémarrer avec une nouvelle demande de vote

quelque chose de genre:

export function* watchPollSaga() {
  while (true) {
    // console.log('watching');
    yield take(types.POLL_SCORE_SNIPPETS);
    yield race([call(dashGenerators.pollScoreSnippets), take(types.POLL_SCORE_SNIPPETS)]);
  }
}
Créé 19/09/2018 à 13:35
source utilisateur
Dans d'autres langues...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more