簡體   English   中英

Angular8 中的行為主體和可觀察對象

[英]behaviour subject and observable in Angular8

我收到了 3 次調用的 rest 服務數據調用。 我需要創建一個數據服務來減少一次調用,以便它保留一個本地副本。如果尚未填充副本,它會點擊 api 來獲取它們。 它應該只執行一次。 因此,需要一個指示 get 調用狀態的布爾值。 如果尚未調用獲取數據,請切換布爾值並獲取數據。 我知道如果組件訂閱 observable 可以做到這一點,並且當數據服務有數據時,它將通過 BehaviorSubject 提供它。 但是不確定如何實現它,因為我沒有使用可觀察對象和行為主題。 對此的任何指導表示贊賞。 謝謝。

這是我的示例 stackblitz https://stackblitz.com/edit/angular-sqxp9e?file=src%2Fapp%2Fnotifications-data.service.ts

我創建了如下數據服務:

  private notificationsSubject = new BehaviorSubject<any>([]);
  private loaded = false;

  public notifications$ = this.notificationsSubject.asObservable();
  public data = [];


  constructor(private restSvc: RestService) { }

  getNotification$(): void {

    if (!this.loaded) {
      this.loaded = true;
      this.restSvc.getData("/api/app/getnotifs").subscribe((data: any) => {
        this.data = data;
        this.notificationsSubject.next(this.data);

      });
    }
    else {
      this.notificationsSubject.next(this.data);
    }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM