异步函数在Angular中返回ZoneAwarePromise [英] Async function returns ZoneAwarePromise in Angular

查看:65
本文介绍了异步函数在Angular中返回ZoneAwarePromise的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有函数 currentUserName(),该函数应返回 name ,但返回ZoneAwarePromise,其中包含具有正确数据的__zone_symbol__value.

I have function currentUserName() that should return name but returns ZoneAwarePromise containing __zone_symbol__value with right data.

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; }));

推荐答案

为什么不使用承诺?

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) }));

这篇关于异步函数在Angular中返回ZoneAwarePromise的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆