【问题标题】:Angular 2 and RxJSAngular 2 和 RxJS
【发布时间】:2016-08-20 10:32:24
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: angular rxjs


    【解决方案1】:

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

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

    【讨论】:

    • 如果我设置了轮询间隔,如何让轮询立即开始?而不是在指定的轮询间隔之后。
    • 试试Observable.concat(Observable.of(null), Observable.interval(1000)).flatMap...
    【解决方案2】:

    谢谢大家,这样就成功了。

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

    【讨论】:

      猜你喜欢
      • 2016-02-11
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      相关资源
      最近更新 更多