確定在我Angular 2
typescript 2
應用程序時間表重播訂閱,我查詢服務器需要定期更新的值。更新之間的延遲是可變的(服務器發送過期日期和值)。RxJS 5角2:通過前面的結果
我無法構成一個可觀察數據流,將重播(啓動對服務器的新的呼叫)一旦自動在當前值達到過期。我至今沒有規模可言:
price = 5; //initial value is known
expires = ...;//initial expiration is known
getData(){
// server returns {expires:number, price:number}
this.http.get('...').map(res => res.json())
}
Observable.timer(expires-Date.now()) // when initial price expires
.switchMap(()=>this.getData()) // fetch new price and expiration
.subscribe(data =>
{
this.price = data.price;
Observable.timer(data.expires-Date.now()) //redo when price expires
.switchMap(()=>getData())
.subscribe(...) //callback hell (endless inner blocks)
}
);
必須有一個更好的方式來安排後續調用
謝謝你的創造性的解決方案。 'getData()'實際上是在一個不同的服務中('DataService'),當前模塊依賴於其他模塊並且依賴於相同的'getData()',所以我不想從'doObservableStuff()'調用'doObservableStuff該方法,並且該方法與'this.price'不在同一個範圍內;這兩種方法應該是獨立的。 – BeetleJuice