Obj []与可观察的<obj []> Angular 2/4

时间:2017-08-25 13:21:59

标签: javascript arrays angular observable

这可能是一个答案太明显的问题,但我没有找到一个好的答案。

假设我有一个对象数组类型'Obj'(Obj[] Vs. Observable<Obj[]>),用于使用* ngFor绑定数据。

以下情况有什么区别/优点:

  1. 当Obj列表作为HTTP响应返回并经常更新时
  2. 当Obj列表作为HTTP响应返回并且仅更新一次
  3. 当它是辅助阵列(未通过HTTP填充)但由另一个阵列更新
  4. Angular推荐的方式是什么?为什么?

    代码:

    //declaration
    private contests: Observable<Contest[]>;
    private dayPlanCandidates: Observable<Contest[]>;
    
    //populate
        let response = this.contestService.search(this.query, page, size, sort);
        this.contests = response.map(p => p.content);
    
    //http call
    return this.http.get(targetUrl, { params: params })
                .share()
                .map(res => res.json())
                .map(pageObj => Page.build(pageObj, Contest.from));
    
    <!-- binding-->
    <div *ngFor="let contest of contests | async"> </div>
    <div *ngFor="let contest of dayPlanCandidate"> </div>
    

    正如您在代码中看到的,有2个Observable数组。

    1. 竞赛数组直接从http响应

    2. 更新
    3. dayPlanCandidates数组取决于比赛。

    4. 我的问题: 如果我应该将两个数组保持为可观察的或 如果我将竞赛[]作为一个可观察对象并将dayPlanCandidates设置为一个竞赛数组?

1 个答案:

答案 0 :(得分:0)

Observable是“简单地”一个对象,它表现为异步数据的包装,或者“以后会出现的数据”。这是RxJS库(或RX一般的一部分,代表:反应式扩展。)这个第三方库集成到Angular中,是一个“通用”对象,允许您操作异步价值相当不错(一旦你掌握了它,陡峭的学习曲线虽然。) - 公平地说,我离开了建立一个整体角度项目而不用担心Observables(和类型)

最好将异步管道与Observables一起使用,因为Angular旨在非常好地使用这些对象(为您节省大量的样板代码)