我与一个复选框进行了交互,每次单击该复选框时都会触发一个 http 请求。
我希望在上一个通话结束后运行每个通话。
我的感觉是 redux-saga 非常适合这个,但我不明白如何为这种交互建模。
如果我使用call
,任何进来的请求都将被忽略,直到
如果我使用fork
,呼叫将同时进行。我不清楚是否/如何等待任务完成。yield task
会这样做吗?
我看到频道可以“缓冲”请求,但我不清楚如何以这种方式使用频道。
我与一个复选框进行了交互,每次单击该复选框时都会触发一个 http 请求。
我希望在上一个通话结束后运行每个通话。
我的感觉是 redux-saga 非常适合这个,但我不明白如何为这种交互建模。
如果我使用call
,任何进来的请求都将被忽略,直到
如果我使用fork
,呼叫将同时进行。我不清楚是否/如何等待任务完成。yield task
会这样做吗?
我看到频道可以“缓冲”请求,但我不清楚如何以这种方式使用频道。
请使用takeLatest
助手。
function* runRequest(action) {
const status = action.payload;
yield call(api, status ? 'on' : 'off');
}
function* rootSaga() {
yield* takeLatest(CHECKBOX_CHANGED, runRequest);
}
takeLatest
如果您想启动 HTTP 请求,则 helper 很有用,每个指定的操作都被分派,并且在新的请求开始之前取消前一个请求。
这是官方文档:http: //yelouafi.github.io/redux-saga/docs/basics/UsingSagaHelpers.html