[英]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.