我正在使用sagas上载不同数量的媒体文件。因此,您可以动态添加更多的媒体文件。我遇到的问题是,在不等待上一个完成的情况下上传文件时,先前分派的操作就会丢失,而新的分派会丢失。基本上,这与具有相同动作类型ms_print massif.out.<pid>
的catch并发动作一样。
代码是这样的:
<pid>
我尝试了使用UPLOAD_ACTION
或export default function* root() {
yield all([takeLatest(LOGIN_REQUEST, login), ..., takeLatest(UPLOAD_REQUEST, upload)]);
}
function* uploadSlide({payload}) {
try {
const response = yield call(
uploadApi,
payload
);
yield put({type: SUCCESS, payload: response});
} catch (error) {
yield put(type: FAILURE);
}
}
的其他替代方法,但是它们没有用。
有什么建议吗?
答案 0 :(得分:1)
上传许多文件时,我也遇到了同样的问题。
使用takeEvery
代替takeLatest
。
takeLatest
用于取消以前的通话,而这正是您所遭受的痛苦。
我认为您系统的另一部分中存在错误。
答案 1 :(得分:0)
您需要使用takeLatest
而不是takeEvery
。 takeEvery
对分配给与模式匹配的商店的每个动作都产生传奇。