По сути, вы хотите, чтобы при вызове одного компонента он ожидал, пока сервис вернет данные. У меня есть компонент, когда он загружает это вызывает один сервис. В сервисе у меня есть функция с HTTP-вызовом, затем он дает ответ, который вызывает сервис, другой функцией, поэтому, когда я просто выполняю компонент, он дает ответ слишком поздно. Я хочу подождать, пока служба вернет данные ответа.
Я пытался с setTimeout
и обещаниями, но все же, требуется время и функция для выполнения вперед.
Установить время ожидания
setTimeout(() => {
if (this.persistenceService.get('base64') != '' || this.persistenceService.get('base64') != null || this.persistenceService.get('base64') != undefined) {
this.selectedFileData = this.persistenceService.get('base64');
this.SpinnerStart = false;
} else {
setTimeout(() => {
this.selectedFileData = this.persistenceService.get('base64');
this.SpinnerStart = false;
}, 10000);
}
}, 10000);
Я хочу загрузить загрузчик компонентов, пока сервис не даст ответ. Вот код сервиса:
this.HttpClients.post(APIcall, Data, config).subscribe(
async (response: any) => {
if (response.status == 200) {
this.json_data = response.data;
this.invoice_pdf(this.json_data, types, '', types, this.Invoice_Number);
// $template_id
}
},
error => {
console.log('Error', error);
}
);
}```