2016-02-27 74 views
0

IM相当新的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双倍我的请求流,即使这是缩进,为什么生成的json流再次正常?

问题是,我使用此代码段将数据登录到我的API中,并且我登录了两次,因此第二次登录时,我的第一个authToken无效,并且我得到一个新的。但是因为我只保存了第一个,所以我保存的标记永远无效。

我在Chrome中检查了请求和响应,它们都是正确的。

回答

0

我发现了这个问题。

问题是我订阅了json流。当我使用地图(因为我想重新使用流),一切正常。 我认为这是一个错误,我会报告它。