は、以下のあなたがこの約束は、サブスクリプションを開くために決済されるのを待つ必要はありませんfirebase
const app = firebase.initializeApp()
const db = app.database();
let unsub;
const user = new Promise((resolve, reject) => {
unsub = app.onAuthStateChanged(
status => {
if (status === null) {
resolve(app.signInWithEmailAndPassword());
} else resolve(user);
},
err => reject(err);
)
});
user.then(unsub, unsub);
db.ref("path/to/data").on("child_added",() => {});
// this promise will fail if the user is not
// auth
const data = db.ref("path/to/data").once("value");
上のユーザのステータスを取得するために簡単な例です。しかし、アプリの設定によっては、認証されていないとデータベースを読み取ることができません。
だから、解決策はかなり複雑になる可能性があります。
我々が持っているリファクタリングの少しで:
const getData =() => db.ref("path/to/data").once("value");
user.then(getData).then(data => { /* data here */ });
この最後の約束は効果的とすぐに、ユーザは、すべてがOKに行った場合に限り、一度認証されるように解決されます。ユーザーを認証する前にサブスクリプションを開くことはできますが、より速く進むことは必ずしも必要ではありません。それを打つための唯一の方法は、最初にdbにアクセスするために必要な読み取り権を削除することです。
こんにちは、少し詳しく説明できますか?私はいくつかのプロジェクトでfirebaseを使用していますので、あなたを助けることができるかもしれませんが、あなたが望むものがネットワークに関係しているのか、firebaseサブスクリプションの実装方法に関係しているのか分かりません。 – adz5A
私が探しているのは、firebaseデータベースからデータを読み込むより速い方法です。私のページを今ロードすると、現在ログインしているユーザーのユーザー情報が、ページがロードされてから1-2秒後に表示されます。 – kensil