如何解决一段时间后在saga函数中如何调用动作?
一段时间后,我尝试了许多解决方案来执行操作,但是似乎没有任何效果:
export default function* authenticateUserRequest({ payload }) {
yield put(setIsLogging(true));
try {
const { login,password,company,isSaved } = payload;
const client = yield call(geoRedClient);
const { data } = yield call(client.auth,{
login,client: company,duree_token: 28800,});
const error = yield call(selectErrorFromResponse,data);
if (!isNilOrEmpty(error)) {
yield put(addError('loginError'));
yield cancel();
}
const { token: authToken,...loginData } = selectCurrentUserLoginFromResponse(data);
yield call(AsyncStorage.setItem,STORAGE_KEY.authToken,authToken);
yield put(loginRequestSuccess(loginData));
//wait 2 seconds
} catch (e) {
yield put(addError('loginError'));
}
yield put(setIsLogging(false));
yield delay(30000);
yield put(logoutRequest());
}
我想在30秒后注销,但是每次我都立即注销,您看到的是我尝试过的。
我也尝试过这个:
const delay = time => new Promise(resolve => setTimeout(resolve,time));
export default function* authenticateUserRequest({ payload }) {
yield put(setIsLogging(true));
try {
// same actions as before
} catch (e) {
yield put(addError('loginError'));
}
yield put(setIsLogging(false));
yield call(delay,2000);
yield put(logoutRequest());
}
还有这个:
const sleep = sec => {
return new Promise(resolve => setTimeout(resolve,sec * 1000));
};
export default function* authenticateUserRequest({ payload }) {
yield put(setIsLogging(true));
try {
// same actions as before
yield sleep(20); //wait 2 seconds
yield put(logoutRequest());
} catch (e) {
yield put(addError('loginError'));
}
yield put(setIsLogging(false));
}
但是什么也没有,总是什么都没有!
任何帮助将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。