【问题标题】:behaviour subject and observable in Angular8Angular 8中的behaviorsubject和observable
【发布时间】:2020-07-28 15:38:03
【问题描述】:

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

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

【问题讨论】:

    标签: angular angular8 rxjs5 rxjs-observables


    【解决方案1】:

    我创建的数据服务如下:

      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);
        }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-22
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多