异步方法始终返回 true
2022-02-24
195
我正在使用 firebase 和 React Native 实现登录功能。
handleLogin
方法始终返回
succeed()
。如果我删除
success()
,我会得到:
[Unhandled promise rejection: TypeError: undefined is not an object (evaluating 'result2.failed')]
export default async function login(credentials) {
let result2= succeed();
result2 = await handleLogin(credentials.email, credentials.password);
if(result2.failed()){
return fail({password: "Login failed"});
}
else{
return succeed();
}
}
const handleLogin = async(email,password) => {
auth.signInWithEmailAndPassword(email, password)
.catch(function(error) {
console.log(error);
return fail("failed");
})
return succeed(); // or fail() in which case method always returns fail()
我也尝试过使用
.then()
,但如果我在
handleLogin()
末尾不返回
succeed()
或
fail()
,我会一直收到对象未定义错误:
auth.signInWithEmailAndPassword(email, password)
.then(function(){return succeed();})
.catch(function(error) {
console.log("we fail"+error);
return fail("failed");
})
2个回答
这是 Firebase 的一个已知问题。我在 angular 代码上也遇到过类似的事情。
Hrushikesh Sawant
2022-02-24
我通过添加返回语句解决了该问题:
return auth.signInWithEmailAndPassword(email, password).then(function(){return succeed();}).catch(function(error) { return fail("Login Attempt Failed\n"+error);})
shardul
2022-02-24