ユーザーがログインしているかどうかを確認し、それに基づいてtrueまたはfalseを返そうとしています。ただし、Firebaseの呼び出しが完了する前に関数が戻ります。
async function checkLogin() {
var result;
await firebase.auth().onAuthStateChanged(function(user) {
if (user) {
result = true;
console.log("user is signed in");
} else {
result = false;
console.log("user is not signed in");
}
});
console.log("End of function");
return result;
}
「機能終了」は、上記の2つの前に印刷されます。結果の値は常に未定義です。が完了する前に関数が戻るようですfirebase.auth()
。戻る前に待たせる方法はありますか?
onAuthStateChanged()は、promiseを返さず、購読解除関数を返します。onAuthStateChanged()
サインイン状態が時間の経過とともに変化するときに呼び出されるリスナー/オブザーバー/サブスクライバーを追加するために使用します。そのコールバック内にコードを記述して、ユーザーがサインインまたはサインアウトしたときに必要なことを実行できます。Promisesはここでは役に立ちません-代わりにそのコールバックを使用するようにコードを設計してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加