javascript - 为什么javascript异步函数不等待firebase.auth方法完成?
问题描述
我正在尝试检查用户是否已登录并基于此返回 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()
。有没有办法让它在返回之前等待。
解决方案
onAuthStateChanged()不返回一个承诺,它返回一个取消订阅函数。您onAuthStateChanged()
可以添加一个侦听器/观察者/订阅者,随着登录状态随时间的变化而被调用。您可以在该回调中编写代码,以在用户登录或退出时执行您想要的操作。Promise 在这里对您没有帮助 - 设计您的代码以使用该回调。
推荐阅读
- java - javax.naming.NamingException:名称未绑定到上下文
- azure-data-factory - ADF数据流转换为整数时如何处理空字符串
- php - 打印 .zpl 文件
- javascript - how to convert a variable into HTML element with Angular
- angular - 无法将 Angular 8 CLI 应用部署为 Azure 应用服务
- sql-server - 如果计算值在某个范围内,则返回 NULL
- php - 如何将函数从 create_function 升级为匿名函数
- java - Android以编程方式在RelativeLayout中切换项目位置
- java - Using multiple data sources (Micronaut) javax.persistence.TransactionRequiredException
- javascript - 获取当前ES模块的文件名