Observable 翻倍
Observable gets doubled
我对 Rxjs 还很陌生,但现在我遇到了问题:
我有这个代码:
const requestStream = Observable.of({
url: siteLocation + 'login',
body: {
personnelNumber : personnelNumber,
password : password
}
});
requestStream.subscribe(response => {
console.log("Hello")
});
const responseStream : Observable<Response> = requestStream
.flatMap(request => {
console.log("Hello2");
return this.http.post(request.url, JSON.stringify(request.body), {
headers: this.getHeaders()
});
});
const jsonStream = responseStream.map(response => response.json());
jsonStream.subscribe(json => {
console.log("Hello3");
this.authToken = json.authToken;
});
但我得到了这个输出:
Hello
Hello2
Hello2
Hello3
为什么 flatMap 将我的请求 Stream 加倍,即使缩进了,为什么生成的 json stream 又正常了?
问题是,我正在使用此代码段登录我的 API,我登录了两次,因此我第二次登录时,我的第一个 authToken 失效了,我得到了一个新的。但是因为我只保存了第一个,所以我保存的令牌永远不会有效。
我检查了Chrome中的请求和响应,它们都是正确的。
我发现了问题。
问题是我订阅了 json 流。当我使用地图时(因为我想重用流),一切正常。
我认为这是一个错误,我会报告它。
我对 Rxjs 还很陌生,但现在我遇到了问题: 我有这个代码:
const requestStream = Observable.of({
url: siteLocation + 'login',
body: {
personnelNumber : personnelNumber,
password : password
}
});
requestStream.subscribe(response => {
console.log("Hello")
});
const responseStream : Observable<Response> = requestStream
.flatMap(request => {
console.log("Hello2");
return this.http.post(request.url, JSON.stringify(request.body), {
headers: this.getHeaders()
});
});
const jsonStream = responseStream.map(response => response.json());
jsonStream.subscribe(json => {
console.log("Hello3");
this.authToken = json.authToken;
});
但我得到了这个输出:
Hello
Hello2
Hello2
Hello3
为什么 flatMap 将我的请求 Stream 加倍,即使缩进了,为什么生成的 json stream 又正常了?
问题是,我正在使用此代码段登录我的 API,我登录了两次,因此我第二次登录时,我的第一个 authToken 失效了,我得到了一个新的。但是因为我只保存了第一个,所以我保存的令牌永远不会有效。
我检查了Chrome中的请求和响应,它们都是正确的。
我发现了问题。
问题是我订阅了 json 流。当我使用地图时(因为我想重用流),一切正常。 我认为这是一个错误,我会报告它。