redux 多个并行API调用

qaxu7uf2  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(184)

我在React中使用redux-saga和redux库来处理我的项目。
我来解释一下我的问题:在一个时刻,前端应用程序将发送n个相同的 Saga “CUSTOM_ACTION”操作(预期行为)。现在,我希望只有一个API调用,即使操作是多个。采取最新的选项不起作用。
这是我的 Saga 代码:
function* testWorker() {
// call api only once
}
function* testWatcher() {
yield takeLatest("CUSTOM_ACTION", testWorker);
}
使用此配置,我有n个API调用,每个操作一个。
如何解决我的问题?
提前感谢所有能帮助我的人

o8x7eapl

o8x7eapl1#

答案有点取决于你所说的“在一瞬间”是什么意思。
如果你的意思是一次只运行一个请求,你可以使用takeLeading效果代替takeLatest。它将启动第一个调度的操作的请求,并忽略所有其他操作,直到 Saga 完成。

function* testWatcher() {
  yield takeLeading("CUSTOM_ACTION", testWorker);
}

如果你指的是某个特定的时间,你可以使用debounce效果,它将在给定的时间内只运行一个 Saga (一旦时间结束,最后一个动作被调度)。

function* testWatcher() {
  yield debounce(500, "CUSTOM_ACTION", testWorker);
}

您可以使用0在很短的时间内运行它。
如果您只是想限制创建的请求数量,则还会出现throttle效应。

相关问题