【发布时间】:2018-08-06 21:06:16
【问题描述】:
我正在使用 typescript/angular 编写应用程序,并且我有一项服务可以获取带有数据的 json,并且我想显示这个下载对象,但可能会发生对象可能比我在一个 html 组件中显示的更多所以我应该拆分这个对象数组。顺便说一句,在此之前我应该通过 ip 地址过滤来自 json 的所有对象,所以我编写这样的组件:
export class ServerBoxComponent implements OnInit {
pods = new Array<Pod>();
@Input() node_s: NodeServer;
getPods() {
// console.log('Download pods');
this.httpService.getPods().subscribe(data => {
this.pods = data.items;
});
console.log('Download status: ' + this.pods.length);
}
filtering() {
console.log('Node_s length: ' + this.node_s.status.addresses[1].address);
console.log('Node_s length: ' + this.pods.length);
for (let i = 0; i < this.pods.length; i++) {
if (this.node_s.status.addresses[0].address === this.pods[i].status.hostIP) {
console.log(this.pods[i].metadata.name);
// this.node_s.podArray.push(this.pods[i]);
}
}
}
ngOnInit() {
this.getPods();
// this.filtering();
}
constructor(private httpService: HttpService) { }
}
但是我不能使用过滤功能,因为 pods 数组是空的,但是为什么呢??
【问题讨论】:
-
当您调用
this.getPods();时,pods数组最终将被填充。如果您在getPods()填充数组之前调用您的filtering(),它将为空 -
它是异步执行的。 this.filtering() 在 this.getPods() 完成之前被执行。异步操作正在运行!使用 Promise 按顺序执行这些功能。
标签: angular typescript service ngoninit