首页 文章

使用RXJS从没有突变的可观察中提取单个值

提问于
浏览
1

我正在尝试为Angular 2的Http Service创建一个包装器服务,它保存返回的Headers而不会改变返回的Observable . 本质上,我想调用任何Angular 2 Http方法(即 http.get() ),然后返回Observable,但保存observable中包含的Response对象 . 据我所知,返回的Observable中只包含一个对象(即Response对象) . CodeScript在TypeScript中看起来应该是这样的:

private headers: Headers;

constructor(private http: Http) { }

public get(url: string): Observable<Response> {
    return this.http.get(url, this.headers);    // save the Response's headers before returned
}

我是RXJS的新手,但我正在寻找一种方法来提取响应,同时仍然返回可观察的 . 任何建议都有帮助,但我更喜欢一种有效的方法,并使用RXJS的良好实践 . 谢谢 .

1 回答

  • 2

    在返回之前,您可以使用临时变量来保存 observable 对象:

    public get(url: string): Observable<Response> {
        let obs = this.http.get(url, this.headers).share();
        obs.subscribe((response) => {
            // do your stuff
        });
        return obs;
    }
    

相关问题