Angular 2和RxJS

Angular 2和RxJS

问题描述:

我想用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

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

感谢球员,所以这个工作。

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秒轮询一次。