【发布时间】:2020-06-12 05:21:29
【问题描述】:
我正在尝试检查用户是否已登录并基于此返回 true 或 false。但函数在 firebase 调用完成之前返回。
async function checkLogin() {
var result;
await firebase.auth().onAuthStateChanged(function(user) {
if (user) {
result = true;
console.log("user is signed in");
} else {
result = false;
console.log("user is not signed in");
}
});
console.log("End of function");
return result;
}
“函数结束”在上述任何一个之前打印出来。结果中的值始终未定义。该函数似乎在firebase.auth() 完成之前返回。有没有办法让它在返回之前等待。
【问题讨论】:
-
如果您的最终目标是检查用户的登录状态,您可以使用
firebase.auth().currentUser -
onAuthStateChanged是否真的返回了一个承诺?返回一个承诺并接受一个回调似乎很奇怪。 -
@frunkad 也不起作用。它从不等待等待。返回未定义
-
在这种情况下,您的 checkLogin() 函数(更好:它的功能)应该从 onAuthStateChanged 中调用
-
@jonrsharpe 我不这么认为
标签: javascript firebase async-await firebase-authentication