2016-08-20 89 views
0

我想用Angular 2.0.0 RC5和RxJS 5.0.0-beta.6構建一個示例實時應用程序。雖然我都是用這個代碼工作的:Angular 2和RxJS

import {IntervalObservable} from 'rxjs/observable/IntervalObservable'; 
    ... 
return IntervalObservable.create(1000) 
       .flatMap(() => this.http.get('filename.json')) 
       .map(this.extractDataCallBack) 
       .catch(this.handleError); 

這是正確的方法嗎?目前的RxJS api文檔似乎指定了不同的方法。有沒有辦法升級到最新版本的RxJS而不會破壞所有內容?

Observable.interval()函數發生了什麼變化?我已經看到了幾個使用這個例子。

任何你可以提供照亮一點點的光這將是偉大的。

非常感謝

JT

回答

2

Observable.interval只是一個快捷方式到IntervalObservable.create

https://github.com/ReactiveX/rxjs/blob/master/src/observable/interval.ts

+0

好的,謝謝。所以我似乎做得正確。 –

+0

如果我設置了輪詢間隔,我如何才能立即開始輪詢?而不是在指定的輪詢間隔之後。 –

+1

嘗試'Observable.concat(Observable.of(null),Observable.interval(1000))。flatMap ...' – j2L4e

0

感謝球員,所以這個工作。

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/of'; 
import 'rxjs/add/observable/concat'; 
import {IntervalObservable} from 'rxjs/observable/IntervalObservable'; 

... 

private serverGetRequestContinuous(requestInterval: number, jsonFileName: String): Observable<any> { 
     return Observable.concat(Observable.of(null), IntervalObservable.create(10000)) 
      .flatMap(() => this.http.get('filename.json')) 
      .map(this.extractDataCallBack) 
      .catch(this.handleError); 
    } 

通過concatenatinge這兩個Observables,第一個請求沒有延遲。如果單獨調用IntervalObservable.create(requestInterval),輪詢將僅在指定的requestInterval後啓動。這第一個Observable現在會導致一個請求,因此不會在UI中顯示數據。第二個Observable每10秒輪詢一次。