异步方法总是返回true



我正在使用firebase和React Native实现登录功能。handleLogin方法总是返回succeed()。如果我移除success(),我得到:

[未处理的承诺拒绝:TypeError:undefined不是对象(正在评估"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");
})

这是一个已知的firebase问题。类似的事情也发生在我的角码上。

我通过添加一个返回语句解决了这个问题:

return auth.signInWithEmailAndPassword(email, password).then(function(){return succeed();}).catch(function(error) { return fail("Login Attempt Failedn"+error);})

最新更新