我要在同一sagaMiddleware.run
函数上使用不同的watchStatus
调用ids
,这取决于需要监视其状态的不同对象。仅在ids
匹配的情况下,我才需要开始和停止轮询。现在,当为STOP_POLLING
调用id = 1
时,它将停止对所有ids
的轮询。我想检查id
,然后仅停止相应的轮询器。
function* pollStatus(dispatch, statusUrl, id) {
while (true) {
try {
const { data } = yield call(() => axios({ url: statusUrl }));
yield put(updateStatus(id, data));
yield delay(2000);
} catch (err) {
console.log(err);
yield put(failedToUpdateStatus(id, err));
}
}
}
export const watchStatus = function* (dispatch, statusUrl, id) {
while (true) {
yield take(Actions.START_POLLING);
yield race([
call(pollStatus, dispatch,statusUrl, id),
take(Actions.STOP_POLLING)
]);
}
}