1

我与一个复选框进行了交互,每次单击该复选框时都会触发一个 http 请求。

我希望在上一个通话结束后运行每个通话。

我的感觉是 redux-saga 非常适合这个,但我不明白如何为这种交互建模。

如果我使用call,任何进来的请求都将被忽略,直到

如果我使用fork,呼叫将同时进行。我不清楚是否/如何等待任务完成。yield task会这样做吗?

我看到频道可以“缓冲”请求,但我不清楚如何以这种方式使用频道。

4

1 回答 1

1

请使用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

于 2016-10-10T13:54:09.373 回答