首先,我有一个http请求,如下所示:
private getValues() {
this._watchlistElements.map(v =>
this.http.get('http://localhost:8080/getValue/' + v.xid)
.subscribe(res => {
this._values.push(res.json());
}));
};
一切都很好,但问题是它返回一个混乱的,未排序的对象数组。我想对它进行排序,这就是为什么我做了一个单独的排序功能:
private sortPoints(){
this._values.sort((a,b) => a.ts - b.ts);
}
来自_values
变量的元素由*ngFor
循环显示:
<tr *ngFor="let elem of _values">
在一个间隔中每隔5秒调用getValues()
函数:
this.loadPoints = setInterval(() => {
this.getValues();
}, 5000);
现在我必须调用排序函数 - sortPoints()
- 某处。我觉得这样很好:
this.loadPoints = setInterval(() => {
this.getValues();
this.sortPoints();
}, 5000);
但不幸的是它不会影响阵列。 *ngFor
循环只是用未排序的元素填充表。但如果我只做一个简单的按钮:
<button (click)="sortPoints()">Sort it!</button>
在按钮单击后立即动态排序数组。
那么我的问题是,如果您有任何其他想法来放置函数以使此机制有效?
任何帮助都非常感谢。
编辑实施@Sasxa解决方案,收到以下错误:
答案 0 :(得分:2)
您可以链接可观察的运算符并处理流,因此最后(当您订阅时)您可以根据需要获得值:
private getValues() {
this._watchlistElements.map(v =>
this.http.get('http://localhost:8080/getValue/' + v.xid)
.map(res => res.json())
.map(data => this._values.push(data))
.map(() => this._values.sort((a,b) => a.ts - b.ts))
.subscribe(sorted => this._values = sorted));
};