这可能是一个答案太明显的问题,但我没有找到一个好的答案 .
假设我有一个对象数组类型'Obj'( Obj[]
Vs. Observable<Obj[]>
),用于使用* ngFor绑定数据 .
以下场景有何区别/优点:
-
当Obj列表作为HTTP响应返回并经常更新时
-
当Obj列表作为HTTP响应返回并且仅更新一次时
-
当它是辅助阵列(未通过HTTP填充)但由另一个阵列更新时
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数组 .
-
contests数组直接从http响应更新
-
dayPlanCandidates数组取决于比赛 .
我的问题:如果我应该将两个数组保持为可观察量,或者我应该将竞赛[]作为一个可观察对象并将dayPlanCandidates设置为一个竞赛数组?
1 回答
Observable
是'simply'一个对象,它作为异步数据的包装,或"data that will come at a later time."这是RxJS
库的一部分(或者通常是RX
,代表:反应式扩展 . )这个第三方库被集成到Angular中并且是"common"允许你很好地操纵异步值的对象(一旦你掌握了它,虽然陡峭的学习曲线 . ) - 公平地说,我逃脱了 Build 一个整体角度项目而不用担心Observables
(和类型)最好使用
Observables
的异步管道,因为Angular被设计为非常好地使用这些对象(为您节省了大量的样板代码)