Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

My async function is not waiting for a promise from Firebase

I am currently learning how async works, while working on a small project using Firebase databases. As far as I understand await should pause the function until a promise is resolved, but in my case it's not waiting for that.

I've shortened 2 functions I used to try and test this:

async findUser(id) {
        await this.firebase.findUserData(id).then(
            value => {
                console.log('finduser stopped waiting');
                return value;
            }
        )
    }
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;
        });
    }

The console output looks like this: (not allowed to embed images yet)

It's running findUser first, followed by the Firebase call, but does not wait for that promise to complete before returning a value. Found user id prints last.

I'm sure I'm doing something really dumb here, but I couldn't figure it out for a while now and have nobody else to turn to.

Sorry if the question is poorly written. First time posting around here. Welcome any feedback!

like image 483
Pokora Avatar asked Nov 01 '25 16:11

Pokora


1 Answers

You should not mix await and thens. Then you also don't forget to await a promise (you never await / return the Promise returned by .once):

async findUserData(userId){
    console.log('firebase started looking for user');
    const snapshot = await firebase.database().ref('/users/' + userId).once('value');
    let user = (snapshot.val());
    console.log('found: ' + user);
    return user;
}

async findUser(id) {
    const value = await this.firebase.findUserData(id);
    console.log('finduser stopped waiting');
    return value;
}
like image 153
Jonas Wilms Avatar answered Nov 03 '25 06:11

Jonas Wilms



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!