gpt4 book ai didi

redux - 在不取消任何效果的情况下运行并行传奇效果

转载 作者:行者123 更新时间:2023-12-04 12:45:12 27 4
gpt4 key购买 nike

我想使用 redux-saga 运行并行效果,如果发生错误,不会抛出。

使用 redux-saga 的 all 效果,如果:

One of the Effects was rejected before all the effects complete: throws the rejection error inside the Generator.



基本上,我想等待所有效果完成以触发操作。我想做这样的事情,但用其他东西替换 all :
export function* getSaga() {
yield put(request());
try {
yield all([fetchItems1, fetchItems2, fetchItems3]);
// Wait for all to resolve or get rejected, then dispatch succeed.
yield put(actions.succeeded());
} catch (e) {
// This should never happen.
}
}

我尝试使用 fork 但如果失败,它会取消所有其他任务。我尝试使用 spawn 但它不会等待任务完成来调度 succeeded

使用常规 JS,有一种称为 reflect 的模式,我想将其应用于 saga。

我们怎样才能做到这一点?

谢谢

最佳答案

按照链接的 stackoverflow 问题的答案,您可以轻松创建 reflect saga 并以相同的方式使用它:

function* reflect(saga) {
try {
return { v: yield call(saga), status: 'fulfilled' }
} catch (err) {
return { e: err, status: 'rejected' }
}
}
...
yield all([fetchItems1, fetchItems2, fetchItems3].map(reflect));

工作示例: https://codesandbox.io/s/y2vx74jzqv

关于redux - 在不取消任何效果的情况下运行并行传奇效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51022489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com