我有一个服务<代码>Userservice,有办法getUsers(
,这一服务由不同的单体部分分担。
这种方法称为APIC,并检索数据。 我想持有最后的APICA号呼吁的结果/状态,因此,我使用了<代码>Behavior Subject,以保持最后状态,如果不同的组成部分打电话getUsers(
,则只有一份APIC号通知要求国家必须归还。
这就是我是如何执行这一决议的。
private _users$: BehaviorSubject<User[]>;
constructor(private http: HttpClient) {
this._users$ = new BehaviorSubject([]);
}
getUsers(): BehaviorSubject<User[]> {
if (!this._getUsersState().length) {
this._loadUsers();
this._users$.subscribe(() => {
return this._users$;
});
} else {
return this._users$;
}
}
_loadUsers() {
let _users$ = this.http.get(`${this._context}/users/`);
_users$.subscribe((users: User[]) => {
this._users$.next(Object.assign([], users));
});
}
_getUsersState(): User[] {
return this._users$.getValue();
}
构成部分
this.userService.getUsers().subscribe((users: any) => {
console.log(users);
});
但是,我正犯以下错误:
ERROR TypeError: Cannot read property subscribe of undefined
如果长度为0,我就自动让用户返回。
我如何解决这一问题? 这种做法是否好?