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
答
感谢球员,所以这个工作。
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秒轮询一次。
好的,谢谢。所以我似乎做得正确。 –
如果我设置了轮询间隔,我如何才能立即开始轮询?而不是在指定的轮询间隔之后。 –
尝试'Observable.concat(Observable.of(null),Observable.interval(1000))。flatMap ...' – j2L4e