Как я могу отменить или изменить запрос сага опроса с одного вызова действия

голоса
3

Я опрос апи с задержкой и отмены с использованием гонки условия.

Что я хочу достичь, когда моя страница отображается, я хочу, чтобы начать опрос для оценки и на каком-то действие я зайду же опрос (то же API) с некоторыми другими параметрами запроса, так что я просто хочу, чтобы обновить тот же опрос с новым Params.

за что я сделал что-то вроде этого.

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

Это работает для меня, но с таким подходом я должен назвать отменить действие снова те же действия для перезапуска снова опроса.

Есть ли способ, что если я буду называть такое же действие, и либо он будет обновлять запрос текущего опроса или отменить или перезапустить с новым запросом опроса

что-то вроде:

export function* watchPollSaga() {
  while (true) {
    // console.log('watching');
    yield take(types.POLL_SCORE_SNIPPETS);
    yield race([call(dashGenerators.pollScoreSnippets), take(types.POLL_SCORE_SNIPPETS)]);
  }
}
Задан 19/09/2018 в 13:35
источник пользователем
На других языках...                            

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