【发布时间】:2021-01-25 04:39:03
【问题描述】:
我对@987654321@ 的调用不断返回一个 Observable 对象而不是实际的数据对象 - 有人知道如何解决它吗?
仪表板组件
this.dashboardFacade.getCurrentUserUid().then((uid) => {
if (uid) {
this.dashboardFacade.getCurrentUser(uid).then((user) => console.log(user));
}
});
仪表板外观
getCurrentUser(uid: string): Promise<unknown> {
return this.userService.getUser(uid);
}
用户服务
getUser(uid: string): Promise<unknown> {
return firebase
.auth()
.currentUser.getIdToken()
.then((token: string) => {
this.logger.debug(`Token generated: ${token}`);
return this.httpClient
.get(`${environment.apiBasePath}/users`, {
headers: { authorization: `Bearer ${token}` },
})
});
}
尝试做:
this.dashboardFacade.getCurrentUserUid().then(uid => {
if(uid) {
this.dashboardFacade.getCurrentUser(uid).subscribe(
(user) => console.log(user)
)
}
});
抛出以下错误:
Uncaught (in promise): TypeError: this.dashboardFacade.getCurrentUser(...).subscribe is not a function TypeError: this.dashboardFacade.getCurrentUser(...).subscribe is not a function in DashboardComponent
【问题讨论】:
-
当你进行 HTTP 调用时,它会返回一个 observable。你可以尝试使用 observable
而不是 promise。看看这是否有效,让我知道.. -
因此您可以将该可观察对象转换为承诺或简单地用作可观察对象
-
将鼠标悬停在 then 语句上。告诉我们它的返回类型。这就是问题所在。
-
我认为问题出在
getUser(uid: string),它返回一个 Promise 而不是 Observable
标签: javascript angular typescript observable subscription