這是我當前的代碼(見圖)我需要我的 OwnProfile 函式來等待我的 GetUsername 函式完成從 firebase 讀取資料,然后再繼續。我嘗試了 async await,但它無法正常作業,如終端中所示,在 GetUsername 獲取資料之前使用了第 52 和 54 行。
任何人有任何提示來解決這個問題嗎?

uj5u.com熱心網友回復:
您需要等待 GetUsername 方法,以便一旦資料有回應就可以執行 console.log
async function OwnProfile ({navigation}){
const data = await GetUsername();
….}
uj5u.com熱心網友回復:
由于您正在使用 中的回呼函式GetUsername(),因此您必須回傳Promise要在回呼函式代碼中決議的 a ,如下所示:
async function GetUsername() {
return new Promise((resolve, reject) => {
database()
.ref('/users/prathik1')
.on('value', snapshot => {
resolve(snapshot.val());
});
});
}
有了這個你應該能夠做到
const result = await GetUsername();
注意:這只是一個不完整的示例。發生錯誤時注意呼叫reject()。
uj5u.com熱心網友回復:
如果您查看參考檔案,on您會發現它不回傳 a Promise,因此您不能回傳await它的結果。使用once(或get) 代替:
function GetUsername() {
return database()
.ref('/users/prathik1')
.once('value')
.then((snapshot) => snapshot.val());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/533685.html
標籤:Google Cloud Collective 火力基地反应本机异步firebase-实时数据库
上一篇:VueJS方法未定義
