javascript - 异步函数在 Angular 中返回 ZoneAwarePromise
问题描述
我有currentUserName()
应该返回name
但返回包含 __zone_symbol__value 和正确数据的 ZoneAwarePromise 的函数。
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) }));
推荐阅读
- google-apps-script - 关于从电子表格附加 excel 文件列表的 Google 脚本
- visual-studio - 即使已启用,如何统一修复循环时间?
- sql - SQL Concat 并将日期转换为 MM/YYYY
- python - 将大括号解析为json?
- c - 如何根据传递给 tree_new() 的枚举类型组合一个 BST 或 RBT 的树 ADT?
- javascript - 关于散景自动加载脚本的令人困惑的说明
- azure-stream-analytics - 如何在输出消息到服务总线的流分析中设置 PartitionKey 属性?
- kubernetes - 如何将数据库连接传递到 Airflow KubernetesPodOperator
- python - Python 递归数独求解器不返回解决方案
- python - 由于记录错误,无法连接到 Interactive Brokers Api