我想用redux-saga运行并行效果,如果发生错误则不抛出.
使用redux-saga的所有效果,如果:
One of the Effects was rejected before all the effects complete: throws the rejection error inside the Generator.
基本上,我想等待所有效果完成以触发动作.我想做这样的事情,但用其他东西取而代之:
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但它不等待任务完成派遣成功.
使用常规JS,有一个名为reflect的模式,我想用saga来应用.
我们怎样才能做到这一点?
谢谢
最佳答案 根据链接stackoverflow问题的答案,您可以轻松创建反射传奇并以相同的方式使用它:
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));