0

我得到了 3 次调用的休息服务数据调用。我需要创建一个数据服务来减少一次调用,以便它保留一个本地副本。如果尚未填充副本,它会点击 api 来获取它们。它应该只执行一次。因此,需要一个指示 get 调用状态的布尔值。如果尚未调用获取数据,请切换布尔值并获取数据。我知道如果组件订阅 observable 可以做到这一点,并且当数据服务有数据时,它将通过 BehaviorSubject 提供它。但是不确定如何实现它,因为我没有使用可观察对象和行为主题。对此的任何指导表示赞赏。谢谢。

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

4

1 回答 1

0

我创建了如下数据服务:

  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);
    }
  }
于 2020-04-20T19:15:12.200 回答