Redux-Saga为多个动作和一个任务takeEvery



我有一个类似的监视器

export default function* watch() {
yield takeEvery(getProducts, fetchData)
yield takeEvery(getUser, fetchData)
}

但是在这种形式下,它不起作用,因为fetchData必须运行一次,并且只有当getProducts和getUser都成功时才能运行

是否有可能以某种方式将两个动作转移到takeEvery,或者是否有类似的takeEvery,它可以接受两个或多个动作,并在成功执行所有转移的动作后才执行fetchData函数?

您可以将alltake结合使用,以等待两个操作,而不考虑顺序。

export default function* watch() {
yield all([
take(getProducts),
take(getUser)
])
yield call(fetchData)
}

如果你想等待这两个动作一旦抓取完成,你可以包装它一个无限while循环:

export default function* watch() {
while (true) {
yield all([
take(getProducts),
take(getUser)
])
yield call(fetchData) 
}
}

如果你不想在等待另一对动作之前等待抓取完成,你也可以将call效果替换为fork

最新更新