Асинхронная функция возвращает ZoneAwarePromise в Angular - PullRequest
0 голосов
/ 28 мая 2018

У меня есть функция currentUserName(), которая должна возвращать name, но возвращает ZoneAwarePromise, содержащий __zone_symbol__value с правильными данными.

currentUserName() {
        var firebaseData = firebase.database().ref('users');
        var userid = this.afAuth.auth.currentUser.uid;

        return firebaseData.orderByKey().once('value').then(function (snapshot) {
            var name;
            snapshot.forEach(function (childSnapshot) {
                if (childSnapshot.key === userid) {
                    name = childSnapshot.val().displayName;
                }
            });
            return name;
        });
    }

Вызов функции:

this.currentUserName().then(function (snapshot) { return snapshot; }));

1 Ответ

0 голосов
/ 29 мая 2018

Почему бы не использовать обещание?

currentUserName(): Promise<any> {
        var firebaseData = firebase.database().ref('users');
        var userid = this.afAuth.auth.currentUser.uid;

        return firebaseData.orderByKey().once('value').then(function (snapshot) {
            var name;
            snapshot.forEach(function (childSnapshot) {
                if (childSnapshot.key === userid) {
                    name = childSnapshot.val().displayName;
                }
            });

            return name;

}

и назвать его так

this.currentUserName().then(function(name) { console.log(name) }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...