Como posso cancelar ou atualizar um pedido saga polling com mesma chamada ação

votos
3

Estou api polling com atraso e cancelamento usando condição de corrida.

O que eu quero alcançar é quando a minha página é processada, eu quero começar a sondagem de pontuação e em alguma ação i chamará mesma sondagem (mesma API) com alguns outros parâmetros de consulta para que eu só quero atualizar a mesma sondagem com novos parâmetros.

para que eu tenha feito algo assim.

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)]);
  }
}

Que está trabalhando para mim, mas com esta abordagem que eu tenho que chamar cancelar a ação, em seguida, novamente mesma ação para reiniciar polling novamente.

Existe alguma maneira que, se eu vou chamar mesma ação e quer ele irá atualizar o pedido de votação atual ou cancelar ou reiniciar com novo pedido de votação

algo do tipo:

export function* watchPollSaga() {
  while (true) {
    // console.log('watching');
    yield take(types.POLL_SCORE_SNIPPETS);
    yield race([call(dashGenerators.pollScoreSnippets), take(types.POLL_SCORE_SNIPPETS)]);
  }
}
Publicado 19/09/2018 em 13:35
fonte usuário
Em outras línguas...                            

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