角度2和RxJS

时间:2016-08-20 10:32:25

标签: angular rxjs

我正在尝试使用Angular 2.0.0RC5和RxJS 5.0.0-beta.6构建一个示例实时应用程序。虽然我正在使用这段代码:

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 个答案:

答案 0 :(得分:2)

Observable.interval只是IntervalObservable.create的快捷方式:

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

答案 1 :(得分: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);
    }

通过连接这两个Observable,第一个请求没有延迟。如果单独调用IntervalObservable.create(requestInterval),则轮询将仅在指定的requestInterval之后启动。第一个Observable现在导致单个请求,因此在UI中显示数据没有延迟。第二个Observable每10秒轮询一次。