我试图通过以下页面上的信息来解决轮询:https://bigbite.net/polling-with-redux/
key
我现在遇到的问题是,我在网络中看到我的服务被调用太多次了。它一直被称为。我的延迟是否应该阻止它在下一轮内调用我的fetchStuff?在代码继续运行之前是否应该等待30秒?
答案 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);
}