当我第一次调用组件函数时,this.products是未定义的。在第二次调用之后,我看到了正确的结果。
我也尝试了使用Observable,也得到了同样的结果。我检查了不同浏览器上的控制台日志。
//Service function
getProducts()
{
return this.http.get<Product[]>(this.serverUrl + '/products').pipe(map(data => data));
}
//Component function
getProducts(){
this.productService.getProducts().subscribe(data => (this.products = data));
console.log(this.products);
}
发布于 2019-06-10 05:14:49
你应该稍微修改一下你处理订阅的方式。
尝试以下操作。
public getProducts(): void
{
this.productService.getProducts().subscribe(data =>
{
this.products = data;
console.log(this.products);
});
}
HTTP调用是一个异步任务,因此您需要从订阅内部进行分配和日志记录,否则console.log();
会在asycn调用开始后立即运行。(Aysnc需要一些未知的时间)。
https://stackoverflow.com/questions/56518400
复制相似问题