小编Pok*_*ora的帖子

我的异步函数不等待 Firebase 的承诺

我目前正在学习异步的工作原理,同时使用 Firebase 数据库开发一个小项目。据我了解,await 应该暂停函数,直到承诺得到解决,但就我而言,它不会等待这一点。

我缩短了两个用来尝试测试这个的函数:

async findUser(id) {
        await this.firebase.findUserData(id).then(
            value => {
                console.log('finduser stopped waiting');
                return value;
            }
        )
    }
Run Code Online (Sandbox Code Playgroud)
async findUserData(userId){
        console.log('firebase started looking for user');
        firebase.database().ref('/users/' + userId).once('value').then(function(snapshot){
            let user = (snapshot.val());
            console.log('found: ' + user);
            return user;
        });
    }
Run Code Online (Sandbox Code Playgroud)

控制台输出如下所示:( 尚不允许嵌入图像)

它首先运行 findUser,然后运行 ​​Firebase 调用,但在返回值之前不会等待该承诺完成。找到最后打印的用户 ID。

我确信我在这里做了一些非常愚蠢的事情,但我有一段时间无法弄清楚并且没有其他人可以求助。

抱歉,如果问题写得不好。第一次在这里发帖。欢迎任何反馈!

javascript async-await firebase-realtime-database

4
推荐指数
1
解决办法
1361
查看次数