Javascript 如何通过react中的redux传奇中的抛出错误来破坏生成器功能
我在redux传奇中有这个函数Javascript 如何通过react中的redux传奇中的抛出错误来破坏生成器功能,javascript,reactjs,generics,redux,redux-saga,Javascript,Reactjs,Generics,Redux,Redux Saga,我在redux传奇中有这个函数 函数*CheckUserIsAuth(){ 试一试{ const user=yield call(getCurrentUser); console.log(用户); 如果(!user)抛出新错误(null); const data=yield调用(createUserDocument,用户); const dataSnapshot=yield data.get(); 屈服put(emailSignInSucc({id:dataSnapshot.id,…dataSn
函数*CheckUserIsAuth(){
试一试{
const user=yield call(getCurrentUser);
console.log(用户);
如果(!user)抛出新错误(null);
const data=yield调用(createUserDocument,用户);
const dataSnapshot=yield data.get();
屈服put(emailSignInSucc({id:dataSnapshot.id,…dataSnapshot.data()}));
}捕获(错误){
产量输出(EmailSignError(error.message));
}
}
如果用户null
我试图使用上面的代码抛出错误,但它仍然转到emailSignInSucc
,并将null
作为字符串提供给我
这意味着它完成了功能,并且不会破坏它检查
用户
以及他们返回的内容。
可能user
是一个空对象,并且不会触发错误
如果调用了
throw new Error()
,则代码将继续在catch
中运行,检查用户
及其返回的内容。
可能user
是一个空对象,并且不会触发错误
如果
抛出新错误()
被调用后,代码将继续在catch
中运行,如果它转到emailSignInSucc
则user
不是null
@Aleksey当我在第二行登录用户时,它会显示为null如果它是null
-您将访问catch
阻止可能是您的操作创建者emailSignInError
使用与EmailSignInScc
相同的操作类型,而不是创建新的one@AlekseyL. 谢谢你的解决方案,问题出在操作类型上如果它转到emailSignInSucc
,那么user
不是null
@Aleksey当我在第二行登录用户时,它会显示它是null如果它是null
-您将进入catch
块可能您的操作创建者EmailSignError
使用与您相同的操作类型emailSignInSucc
而不是创建新的one@AlekseyL. 感谢您提供的解决方案,问题出现在实际操作中,第二行是typei'm print user,它返回null。第二行是i'm print user,它返回null