我正在尝试从API调用中获取对象数组,并将其保存到组件变量中。但是,在分配功能时,该值保持局部。例如:
export class ItemsComponent implements OnInit {
items: Item[];
constructor(private ProductInformation: ProductInformationService) { }
ngOnInit() {
this.getProducts();
console.log(this.items); //undefined
this.items = MOCK_ITEMS;
console.log(this.items); //correct 3 items
}
getProducts() {
this.ProductInformation.getAllProducts(
(response) => {
this.items = response
console.log(this.items); //correct 3 items
}
);
}
}
为什么在调用items
之后getProducts()
未定义?为什么只将其保存在本地,我如何使它工作?
答案 0 :(得分:1)
与 scope
无关。如果您查看您的 getProducts
方法,则它是异步调用。一段时间后,您会得到答复。因此,当您立即放入console.log(this.items);它变得不确定。
将 console.log()
放入订阅中时,您一直在等待得到响应。因此您会看到在那里定义的项目。模拟项目也是如此,因为在那里有项目,您可以在控制台中看到这些元素。