使用redux-saga控制ajax调用的顺序

时间:2016-10-01 19:02:40

标签: redux-saga

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

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

我的感觉是,redux-saga将是完美的,但我不理解如何建模这种互动。

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

如果我使用fork,则所有通话都将同时进行。我不清楚是否/如何等待任务完成。请yield task这样做吗?

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

1 个答案:

答案 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