我使用onAuthStateChange observer成功檢查用戶的身份驗證狀態,並將用戶重定向到Dashboard頁面(react-native項目)。但是,在儀表板上,我已經想要顯示一些用戶特定的數據,例如登記的節目/統計。爲此,我需要初始化和填充currentUser對象,這需要一些時間(我需要從那裏獲得來自數據庫的一些數據)。因此,我正在尋找一些方法來等待這個過程成功完成。我想要做的是在componentDidMount中使用async/await語法,但返回的結果爲null。 (相同的語法成功的作品在其他屏幕,但未能在第一個)獲取firebase.auth()。currentUser with async/await
async componentDidMount() {
try {
let uid = await firebase.auth().currentUser.uid;
console.log(uid);
} catch(error) {
console.log(error);
}
}
什麼可以等待currentUser對象使用異步/ AWAIT語法加載的最佳方式?我認爲,原因可能是firebase返回null作爲第一個結果,然後將uid更正爲第二個結果。
對於現在的解決方法,我使用了簡單的setInterval函數,但我不想增加大量的加載時間。
let waitForCurrentUser = setInterval(() => {
if (firebase.auth().currentUser.uid !== null) {
clearInterval(waitForCurrentUser);
let uid = firebase.auth().currentUser.uid;
this.setState({uid});
return firebase.auth().currentUser.uid;
} else {
console.log('Wait for it');
}
}, 700);
不幸的是,它並沒有太大的變化。它返回currentUser.uid爲空或拋出錯誤,因爲這個對象還沒有完成加載或第一個結果爲空,我需要第二個或類似的東西。所以,我不知道我怎麼能等待這個對象完成加載。 – Denis
從內部返回如果條件工作 – Codesingh
我認爲控制繞過這些語句......所以它可能工作,如果條件.. – Codesingh