用redux-saga轮询

时间:2019-05-03 07:57:51

标签: javascript reactjs redux-saga

我试图通过以下页面上的信息来解决轮询:https://bigbite.net/polling-with-redux/

key

我现在遇到的问题是,我在网络中看到我的服务被调用太多次了。它一直被称为。我的延迟是否应该阻止它在下一轮内调用我的fetchStuff?在代码继续运行之前是否应该等待30秒?

1 个答案:

答案 0 :(得分:0)

我在问题所在的行上发表了评论。当我修复“自制方法”,handleResponse(response)时,拉动逻辑就起作用了。因此,只要看看我如何处理该方法中的响应,该代码就可以与相应的reducer和action等一起使用:

import { delay } from 'redux-saga';
...

export function* pollStuffSaga() {
  while (true) {
    try {
      const response = yield call(fetchStuff);
      const items = handleResponse(response); // The problem was inside this function
      yield put(onFetchStuffSuccess(items));
      yield delay(30000);
    } catch (e) {
      yield put(onFetchStuffFailure(e));
    }
  }
}

function* pollWatcherSaga() {
  while (true) {
    yield take(START_POLLING);
    yield race([call(pollArchiveSaga), take(STOP_POLLING)]);
  }
}

export default function* rootSaga() {
  yield call(pollWatcherSaga);
}