我遇到的问题是,当页面加载时,需要一秒钟检查用户是否已登录。我使用该auth函数创建currentUser变量,该变量已成功用于其他由click单击触发的函数事件。但是当在页面加载时加载特定于该用户的内容时,它表示该变量未定义(因为它需要auth才能完成)。
如何在auth完成之前获取当前用户,或者使加载时触发的函数等待auth为竞争对手?
答案 0 :(得分:4)
Firebase上周五(2014年10月3日)发布了新的客户端库,其中包含用于身份验证数据的同步访问器,这听起来就像您需要的那样:
var ref = new Firebase('https://<your-firebase>.firebaseio.com');
var authData = ref.getAuth();
尝试将您的客户端库升级到适用于Web的v1.1.0或更高版本,并在https://www.firebase.com/docs/web/guide/user-auth.html#section-monitoring-authentication上查看最新文档。
答案 1 :(得分:2)
您可以使用setInterval
,以下代码会每隔半秒检查一次currentUser
,并在fireBusinessLogicHereFunction()
可用时运行currentUser
:
var checkAuthInterval = setInterval(function(){
if ( typeof currentUser !== undefined ) {
clearInterval(checkAuthInterval);
fireBusinessLogicHereFunction();
}
}, 500);
稍后可以使用promises
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise