redux - 如何使用带有参数的 redux-saga 取消当前正在运行的请求?
问题描述
我想在单击按钮时取消 redux saga 中的请求
这里的第一个传奇是从服务器获取数据的传奇
function* fetchData({ payload: a, b, c}) {
try {
// ...API call
action.success(data);
} catch (e) {
action.fail(e);
} finally {
if (yield cancelled()) yield put(getDataCancelled());
}
}
然后我有一个按钮,点击它会触发下面的功能。下面的 saga 假设从上面的 fetch 中取消当前正在运行的请求。
function* stopFetchData({ payload }) {
try {
const task = yield fork(fetchData);
// API Call to clean up data from server
action.cancelSuccess(data);
yield cancel(task);
} catch (e) {
action.cancelFailed(e);
}
}
export function* fetchDataWatcher() {
yield takeLatest(SET_DATA, fetchData);
}
但是我的参数有错误,一旦触发,sagas 就会停止工作,因为它正在查找函数的参数。我已经尝试添加参数,结果是,点击获取后,取消。取消触发,但提取仍在继续。