检索数据时Firebase延迟

时间:2017-09-01 14:19:24

标签: javascript rest firebase

使用Firebase API从数据库中读取数据给我一个尴尬的时刻,在Web UI加载后1-2秒突然出现。有没有人有阅读数据的替代方案?我已经尝试过REST API,但我仍然需要使用Firebase authlistener,它再次让我延迟,然后才能检索用户ID并使用REST API。我读的数据有多小并不重要。

我会在加载屏幕上欣赏任何内容!

1 个答案:

答案 0 :(得分:0)

下面的

是一个在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 */ });

当且仅当一切正常时,用户一次授权即可有效解决此最后一个承诺。您可以在对用户进行身份验证之前打开订阅,但不能保证更快。击败它的唯一方法是首先删除访问数据库所需的阅读权限......