异步函数在Angular中返回ZoneAwarePromise [英] Async function returns ZoneAwarePromise in Angular
本文介绍了异步函数在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屋!
查看全文