我有一個函數,可以選擇設置一個標題與從localStorage
檢索的數據。 localStorage
操作返回一個承諾,我可以變成一個Observable。一旦標頭設置(或沒有),我想打一個http請求並返回可觀察到的結果:等待觀察者完成,開始另一個,並訂閱其輸出
let startObs;
if (useHeaders) {
startObs = Observable.fromPromise(this.getStoredHeaders());
}
else {
startObs = Observable.empty();
}
// wait for startObs here
return this.http.get(url, headers);
基本上我想等startObs
完成,然後返回http.get
觀察到。我曾嘗試使用類似startObs.concat(this.http.get())
或startObs.switch(this.http.get())
的東西,但是這會從可觀察源和http.get
可觀察值發出。我只想想要發出的http.get
可觀察。
有沒有什麼辦法可以只等待鏈中的最後一個觀察值,而等待先前的觀察值才能完成?
你在哪裏訂閱數據?更新到 – Aravind
這是異步的,這是可觀察到的整點:)所以你將無法按照你想要的方式完成。你應該訂閱和做你想要的訂閱,但訂閱服務也不是一個好主意。您應該簡單地創建可觀察鏈,並從組件訂閱它,例如 – Maxime
您可以使用concat()然後使用last()。 http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-last –