gpt4 book ai didi

angular - 订阅 RxJS Observable 两次。两次获得响应值

转载 作者:太空狗 更新时间:2023-10-29 17:22:13 25 4
gpt4 key购买 nike

假设我有一个 Angular 2 服务。 createToken函数从服务器获取登录 token :

//ANGULAR 2 SERVICE:
//login to application
createToken(email: string, password: string) {
let headers = new Headers({
'Content-Type': 'application/x-www-form-urlencoded'
});

let data = 'username=' + email + '&password=' + password + '&grant_type=password';

this.http.post(this.loginURL, data, { headers: headers })
.map(response => response.json())
.subscribe(
response => {
localStorage.setItem(this.storageTokenKey, response.access_token);
console.log("Token: " + response.access_token);
},
error => {
console.log(error.text());
});
}

我需要用我的 token 做两件事:

  1. 将它保存到本地存储(每次都会这样做,所以它应该在服务中)
  2. 在组件中对其进行一些操作(显示它或其他)

为了做到这一点(据我了解 Observables),我的 createToken函数必须返回 Observable<>允许将使用它的组件调用它的 .subscribe对结果进行一些操作的方法。

不幸的是,as I see from RxJS documentation , .subscribe方法不返回 Observable<>

然后我应该怎么做才能调用.subscribe()方法两次?

最佳答案

您可以使用 do() operator :

Perform a side effect for every emission on the source Observable, but return an Observable that is identical to the source.

return this.http.post(this.loginURL, data, { headers: headers })
.map(response => response.json())
.do(response => {
localStorage.setItem(this.storageTokenKey, response.access_token);
console.log("Token: " + response.access_token);
});

关于angular - 订阅 RxJS Observable 两次。两次获得响应值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39063118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com