Javascript 数组在订阅范围外变得未定义
因此,在我的angular项目中,我创建了一个包含http get请求的方法的服务,如下所示:Javascript 数组在订阅范围外变得未定义,javascript,angular,Javascript,Angular,因此,在我的angular项目中,我创建了一个包含http get请求的方法的服务,如下所示: getAllProducts(){ return this.http.get<IProduct[]>(this.baseUrl + 'products/all');} 我的问题是:如何将httpget结果复制到组件的变量中,而不使其超出可观察的范围?由于http调用返回可观察的结果,并且将同步和异步编程混合在一起,因此无法定义。所以这里发生的是: onInit调用update() 您
getAllProducts(){
return this.http.get<IProduct[]>(this.baseUrl + 'products/all');}
我的问题是:如何将httpget结果复制到组件的变量中,而不使其超出可观察的范围?由于http调用返回可观察的结果,并且将同步和异步编程混合在一起,因此无法定义。所以这里发生的是:
update()
getAllProducts()
console.log()
打印未定义的数组,因为订阅尚未执行已分配所有产品
您要做的是从订阅中执行您的逻辑,如果您必须在html中使用它,那么您可以在必要时使用ngIf。您的目标已经完成,只是您无法控制台。请在最后一行中尝试执行的位置记录它
ngOnInit(): void {
this.update();
}
update(): void{
this.adminService.getAllProducts().subscribe(response =>
{
this.allProducts = {...response};
console.log(this.allProducts); //Returns a filled array
}, error => {
console.log(error);
});
console.log(this.allProducts); //Returns undefined
}