【发布时间】:2017-11-29 11:09:14
【问题描述】:
我有一个服务“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 没有等待数据从订阅中返回,而是执行了当时没有任何内容的返回语句。但我想不出任何可以解决这个问题的解决方案。
我需要一些专家建议。另外,我做这样的任务的方法正确吗?
【问题讨论】:
标签: javascript angular rxjs