Javascript 如何访问不同js文件中的用户对象

Javascript 如何访问不同js文件中的用户对象,javascript,html,asynchronous,firebase-authentication,google-signin,Javascript,Html,Asynchronous,Firebase Authentication,Google Signin,我制作了一个谷歌登录js文件,在我的网站的登录屏幕上运行。但是,我希望在我的网站上使用完全不同的javascript文件的不同页面上访问该用户对象(已登录)。如何获取登录到另一个javascript文件的用户对象?另外,我对异步工作原理的了解非常贫乏,但如果有人能帮我解决这个问题,我将非常感激 另外,在代码片段中,我在下面展示了一个非常奇怪的bug。当I console.log(name)时,它输出一个空字符串,并在某一点上输出登录用户的实际名称。然而,在我所拥有的任何js文件中,我都没有初始化

我制作了一个谷歌登录js文件,在我的网站的登录屏幕上运行。但是,我希望在我的网站上使用完全不同的javascript文件的不同页面上访问该用户对象(已登录)。如何获取登录到另一个javascript文件的用户对象?另外,我对异步工作原理的了解非常贫乏,但如果有人能帮我解决这个问题,我将非常感激

另外,在代码片段中,我在下面展示了一个非常奇怪的bug。当I console.log(name)时,它输出一个空字符串,并在某一点上输出登录用户的实际名称。然而,在我所拥有的任何js文件中,我都没有初始化过name变量,所以我不知道它是如何获取数据的。然后我继续关闭XAMPP并重新启动,现在它打印出一个空字符串,这让人困惑,因为它应该是未定义的

我已经尝试阅读了多个论坛,现在,我已经开始使用firebase.auth().onAuthStateChanged(函数(用户){…代码…});然而,最大的问题是,如果我在该函数中重新分配变量名以在javascript文件中使用,那么它将无法工作,因为它是一个异步函数。我基本上希望提取(name=user.displayName,email=user.email,id=user.uid)等信息,以便以后在javascript中使用

javascript

 firebase.initializeApp(config);
    firebase.auth().onAuthStateChanged(function(user){
        if(user){
            var user = firebase.auth().currentUser;
            userName = user.displayName;
        }
        else {
            console.log("Not Signed In");
        }
    });
    console.log(name);
    console.log(userName);




//SHOWS AN EMPTY STRING ON THIS LINE                       other_file.js:39
Uncaught ReferenceError: userName is not defined           other_file.js:40
    at other_file.js:40

在定义用户对象的文件中,将用户名分配给窗口对象,如window.userName=userName。它将在全球范围内使用

在我的登录js文件中?在哪里定义用户名。请记住,分配给窗口后,只有您可以访问它。我尝试了这个,但它不起作用。变量仍然没有定义。它们在不同的页面上运行。这只是web开发中在文件中共享数据的一种方法。如果不查看您的代码,我无法向您推荐任何其他内容。
onAuthStateChanged
是异步的。在呈现UI之前,您必须等待它触发。