Ожидание ответа службы, а затем идти вперед в угловых? - PullRequest
0 голосов
/ 06 ноября 2019

По сути, вы хотите, чтобы при вызове одного компонента он ожидал, пока сервис вернет данные. У меня есть компонент, когда он загружает это вызывает один сервис. В сервисе у меня есть функция с 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);
      }
    );

}```

1 Ответ

0 голосов
/ 06 ноября 2019

Сделайте что-то вроде этого:

selectedFileData$: Observable<FileData>;

ngOnInit() {
  this.selectedFileData$ = this.persistenceService.get('base64'); // Observable!
}

<ng-container *ngIf="selectedFileData$ | async as selectedFileData; else spinner">
  // your business stuff
</ng-container>

<ng-template #spinner>
  // your spinner stuff
<ng-template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...