Javascript Firebase响应太慢

Javascript Firebase响应太慢,javascript,reactjs,firebase-realtime-database,use-state,Javascript,Reactjs,Firebase Realtime Database,Use State,嘿,伙计们,我正在使用Firebase实时数据库为我的React.js Web应用程序获取一些数据 有一个名为Corr\u User的useState应该存储正确用户名的值 我有一个函数从Firebase获取用户名:- function Login(){ const path = firebase.database().ref("users").child(username); path.once("value&q

嘿,伙计们,我正在使用Firebase实时数据库为我的React.js Web应用程序获取一些数据

有一个名为
Corr\u User
useState
应该存储正确用户名的值

我有一个
函数
从Firebase获取用户名:-

 function Login(){

       const path =  firebase.database().ref("users").child(username);
       
        path.once("value")
        .then(snapShot => {            
            setCorr_User(snapShot.child("username").val());
             
        })
执行此操作时,
console.log(Corr\u User)
会打印一个空字符串,指示未更新
useState
。 为了确认,我还记录了
snapshot.val()
。这打印了适当的值

我可以从中了解到Firebase返回响应太慢,因此我的
useState
没有得到更新。我的理解正确吗?有没有办法让我的
Login()
函数等待响应

请帮忙!!提前谢谢

编辑- 好吧,我想有点混乱。代码是这样的

 function Login(){
....
.once("value")
.then(snapShot => { // After fetching the data
 
 setCorr_User(snapShot.child("username").val()); // Assigning the value

 console.log(snapShot.val()); // This should be logged first

}) // End of function snapShot()

// This is still inside Login()
 console.log(Corr_User) // But this is logged first

} // End of Login()

正是从这一点,我能够猜测Firebase的响应速度太慢,
useState
没有得到相应的更新,因为
snapShot.val()
仍然是空的。

数据是从Firebase异步加载的,当数据可用时调用
然后
。这实际上意味着在
console.log(snapShot.val())
之前调用
console.log(Corr\u User)
。因此,任何需要数据库数据的代码都必须在
然后
回调中,或者从那里调用

对于不熟悉异步API的开发人员来说,这是一个非常常见的绊脚石,因此我建议研究以下链接:


我猜您试图
控制台。设置后在下一行记录它?不能这样做,状态更改是异步的,我在函数
snapShot
之外做了
console.log()。无论如何,我将如何知道
useState
是否已更新。