我与复选框进行交互,每次单击复选框时都会触发http请求。
我希望每次通话都在上一次通话结束后运行。
我的感觉是,redux-saga将是完美的,但我不理解如何建模这种互动。
如果我使用call
,任何进入的请求都将被忽略,直到
如果我使用fork
,则所有通话都将同时进行。我不清楚是否/如何等待任务完成。请yield task
这样做吗?
我看到频道可以"缓冲"请求,但我不清楚如何以这种方式使用频道。
答案 0 :(得分:1)
请使用takeLatest
帮助。
function* runRequest(action) {
const status = action.payload;
yield call(api, status ? 'on' : 'off');
}
function* rootSaga() {
yield* takeLatest(CHECKBOX_CHANGED, runRequest);
}
takeLatest
帮助程序非常有用,如果您想要启动HTTP请求,则会调度每个指定的操作,并在新请求启动之前取消上一个请求。
以下是官方文档:http://yelouafi.github.io/redux-saga/docs/basics/UsingSagaHelpers.html