我尝试从http服务获取ngOnInit中的数据时遇到问题。触发组件时,我需要在var中设置数据,以便可以在其他函数中使用它。
我通过执行ngngInit异步操作并从Promise函数接收响应来实现这一点,但是我认为这不是一个好习惯吗?我该如何改善?
这是我的代码:
COMPONENT.TS
async ngOnInit() {
this.username = localStorage.getItem('username');
this.segment.value = 'FUNCIONAL';
this.categoria = this.segment.value;
this.listadoClases = await this.claseServicio.obtenerListadoClases(this.categoria); // **Need to set this variable at onInit**
SERVICE.TS
getClases(actividad) {
return this.http.get(`https://anders-test.herokuapp.com/clases/obtenerPorCategoria/${actividad}`);
}
obtenerListadoClases(categoria) {
return new Promise(resolve => {
this.getClases(categoria).subscribe(data => {
if (data) {
resolve(data)
}
})
})
}
我这样做是因为我试图学习/理解异步/等待。我想稍微提高一下代码水平。.但是,我在阅读了很多书之后还是不明白这个主意。
谢谢大家!
我尝试从http服务获取ngOnInit中的数据时遇到问题。触发组件时,我需要在var中设置数据,以便可以在其他函数中使用它。我通过异步实现了这一点...
HttpClient以角度返回一个Observable对象。您可以只订阅它,并且会给您响应并且可以在多线程上工作。这样,您可以避免用户等待响应出现。这是一个好习惯,与此同时,您可以独立于api响应数据执行其他操作。