gpt4 book ai didi

javascript - Angular:将 Observable 传递给另一个服务

转载 作者:行者123 更新时间:2023-12-01 17:32:12 25 4
gpt4 key购买 nike

我有一个服务“DataStorageService”,它负责通过 HTTP 从 firebase 获取数据。它看起来像这样:

export class DataStorageService {

private _data_source_url = "https://a******9.firebaseio.com/";

constructor(private _http: Http) {}

getUsers() {
return this._http.get(this._data_source_url + "users.json")
.map((response: Response) => {
return response.json();
});
}

}

我正在使用另一个服务“UsersService”将此数据放入用户数组中。它看起来像这样:

@Injectable()
export class UsersService{

private _users: User[];
public usersChanged = new Subject<User[]>();

constructor(private _dataStorageService: DataStorageService) {}

public getUsers(): User[] {
this._dataStorageService.getUsers()
.subscribe((users: User[]) => {
this._users = users;
this.usersChanged.next(users);
});
return this._users.slice();
}

}

我正在尝试使用 UsersService 中的 getUsers() 方法从组件访问数组。但是,我没有得到任何数据,我认为是因为 getUsers 没有等待数据从订阅返回,而是执行了当时没有任何内容的返回语句。但我想不出任何可以解决这个问题的解决方案。

我需要一些专家的建议。另外,我的方法做这样的任务是否正确?

最佳答案

你为什么不在你的组件中这样做?

this.usersService.usersChanged.subscribe(users => {
this.componentUserVariable = users
})

关于javascript - Angular:将 Observable 传递给另一个服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47551373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com