4
我試圖創建一個服務,以給定的間隔(每5秒)輪詢日誌。我需要進行一次http GET調用,但在慢速連接和大型日誌上,switchMap
取消了上一個未決請求。因此,在請求被取消時,我永遠不會收到日誌。Rxjs Observable Interval和Angular2 HTTP:等待響應
getLog(url:string):Observable<string> {
return Observable
.timer(0, 5000)
.switchMap(() => this.get(url))
.retryWhen(error => error.delay(5000))
.map((res:Response) => res.text())
.catch(e => {
console.warn(e.toString());
return Observable.from("");
});
}
和this.get(url)
只不過是get(url) {return this.http.get(url)}
。
我正在尋求保持定時器的功能,但不會觸發另一個http調用,直到前一個調用已解決,並且不取消掛起的調用。
[RxJava中的flatmap和switchmap有什麼不同?](http://stackoverflow.com/questions/28175702/what-is-the-difference-between-flatmap-and-switchmap-in- rxjava) – jonrsharpe
換句話說:改用'flatMap'。 – jonrsharpe
@jonrsharpe'flatMap'不斷創建新的請求。我不想在掛起的請求完成之前創建新的請求。 – bomba6