HttpClient возвращает наблюдаемый объект в угловых единицах. Вы можете просто подписаться на него и даст вам ответ и работает на многопоточность. В этом случае вы не будете ждать, пока ответ придет. Это хорошая практика, и в то же время вы можете выполнять другие операции независимо от данных ответа API.
Но если вы хотите подождать, пока данные будут извлечены из API, вы можете использовать Promise, и это можно обработать по ключевому слову , а затем . В современном Javascript вы можете справиться с этим, используя async / await . Что больше похоже на синхронный код и легко читается и понимается.
Пожалуйста, следуйте этому
ngOnInit() {
this.username = localStorage.getItem('username');
this.segment.value = 'FUNCIONAL';
this.categoria = this.segment.value;
this.obtenerListadoClases();
Не рекомендуется добавлять асинхронный код перед ngOnInit
async obtenerListadoClases() {
try {
this.listadoClases = await this.claseServicio.obtenerListadoClases(this.categoria);
}).catch((e) => {
console.log(e);
});
}
Поскольку HttpClient возвращает объект Observable в угловых 5 *, в этом случае вам нужно сделать метод асинхронным, который будет возвращать обещание. То, что вы можете сделать, как вы сделали.
return new Promise((resolve, reject) => {
this.getClases(categoria).subscribe((res: any) => {
resolve({status: 200, data: res});
}, (error) => {
resolve({status: 400, data:[]});
},
() => {
resolve({status: 201, data:[]});
});
})
Для получения дополнительной информации, пожалуйста, проверьте это Использование функции асинхронного ожидания в Angular