我在传奇效果中的 yield all 有问题,我在下面提供了我的示例代码
function* fetchData(item) {
try {
const data = yield call(request, url);
yield put(fetchDataSuccess(data));
} catch (error) {
yield put(fetchDataFailure(error));
throw error;
}
}
function* fetchSummary(action) {
try {
yield all(
list.map(item=>
call(fetchData, item)
)
);
} catch (error) {
yield put(
enqueueSnackbar({
message: "Has Error",
options: { variant: "error" }
})
);
}
}
它的逻辑是我想调用多个请求(一些成功,一些失败)。
预期:如果请求失败,错误将在 yield all 之后被捕获,但那些成功请求仍然继续,它应该在单个成功请求之后调度操作“fetchDataSuccess”(Promise.all 可以这样做)
实际:如果请求失败,yield all 后会捕获错误,然后 saga 立即取消所有其他“fetchData”调用。
谁能帮我实现这个逻辑。提前致谢。