Bonjour,

je voudrais savoir les bonnes pratiques pour charger les données d'un webservice une seule fois, actuellement je fais comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
private companies: Company[];
  getCompanies(): Observable<Company[]> {
    if (!this.companies) {
      this.httpClient.get<Company[]>(`${this.baseUrl}api/Companies/GetShortListCompanies/${this.msalService.getAccount().accountIdentifier}`).pipe(share()).subscribe(r => this.companies = r);
    }
    return of(this.companies);
  }
est-ce qu'il y a une meilleure façon de faire ?

Seconde question, c'est une appli que j'ai repris et il y a souvent ce type de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 private companies$: BehaviorSubject<Company[]> = new BehaviorSubject(undefined);
  private isCompaniesRequestOnGoing: boolean;
getCompanies(): Observable<Company[]> {
    this.companies$.pipe(
      take(1)
    ).subscribe((companies) => {
      if (!this.isCompaniesRequestOnGoing) {
        this.isCompaniesRequestOnGoing = true;
        this.httpClient.get(`${this.baseUrl}api/Companies/GetShortListCompanies/${this.msalService.getAccount().accountIdentifier}`).pipe(
          take(1)
        ).subscribe((companies: Company[]) => {
          console.log(companies);
          this.companies$.next(companies);
        }, error => {
          console.log(error);
        }, () => {
          this.isCompaniesRequestOnGoing = false;
        });
      }
    });
 
    return this.companies$;
  }
Je n'arrive pas à comprendre à quoi il sert ? pourquoi subscribe sur le behaviorSubject qu'on renvoi ?