2016-02-27 128 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流。當我使用地圖(因爲我想重新使用流),一切正常。 我認爲這是一個錯誤,我會報告它。