打字稿解析可观察的实体

时间:2018-01-27 18:19:46

标签: javascript angular typescript

我想解决一个observable到它的底层类型。是的,我知道我应该这样做,但目前我想测试没有修复我的架构的东西,我想知道它是否可能。

这是基本提供程序中用于调用GET请求的函数

getByRoute(url: string): Observable<T> {
    return this.http.get(url).map(res => <T>res.json());
}

我有一个唯一的类返回一个具有Id的具体对象。     // public currentUser = {id:1};

但是现在我试图将我的提供程序实现为懒惰加载当前用户,我现在没有时间将所有内容切换为使用observable,但我想知道我的其他代码是否正常工作

private _user: User;
get currentUser(): User {
    if (this._user == null) {
        this._user = this.getLoggedInUser();
    }
    return this._user;
}
set currentUser(user: User) {
    this._user = user;
}

constructor(public usersProvider: Users) {
}

getLoggedInUser(): User {
    return this.usersProvider.getByRoute(URL).single();
};

如何解析我的Observable以获取实体?

1 个答案:

答案 0 :(得分:1)

您需要订阅observable,然后将其分配给您班级的属性。

this.usersProvider.getByRoute(URL).subscribe(next => {
  this.currentUser = next;
});

请注意,您需要自行处理此订阅的清理工作! (这个主题将有助于:Angular/RxJs When should I unsubscribe from `Subscription`

另外,你无法真正“解决”一个Observable - 它不是一个承诺!查看此主题以获取更多信息:Angular - Promise vs Observable