Получение услуги в Angular перед использованием - PullRequest
1 голос
/ 10 апреля 2020

Я довольно новый в Angular. Я не знаю, правильный ли этот шаблон, который я использую в различных сервисах. Моему сервису нужно выполнить несколько http запросов, чтобы быть готовым. Конструкторы не могут быть асинхронными c, поэтому я решаю эту проблему следующим образом:

Сервис

export class MyService {

    constructor(HttpClient:http) {
    }

    private  longAndNeededMethod():Observable{
       //Blablabla....
       return this.http.post(...);
    }

    async ready() {
      if(notReady){
        await this.longAndNeedMethod().toPromise().then(
          (response)=>{
               //do something
          });
      }
    }

    //Another methods
}

Компонент

export class MyComponent{
  constructor(private myService:MyService){}

  async onInit(){
    await this.myService.ready();
  }

  //Another methods
}

Является ли этот дизайн правильным?

Спасибо

1 Ответ

0 голосов
/ 10 апреля 2020

Я бы не стал блокировать пользовательский интерфейс с помощью await. Было бы лучше, чтобы ваш метод ready () возвращал наблюдаемое и использовал это наблюдаемое для загрузки MyComponent по завершении наблюдения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...