我正在订阅服务以获得一组团队
teamService代码:
这是我的teamService代码(从firebase获取结果):
getTeams(): Observable<Team[]> {
this.login();
let teams: Team[] = [];
return this._db.list('teams')
.map((response) => {
response.forEach(team => {
this._fb.storage().ref().child('teams/' + team.photo).getDownloadURL()
.then(imageUrl => {
teams.push(new Team(team.id, team.name, imageUrl, team.zone, team.points, team.matchesPlayed,
team.matchesWon, team.matchesDrawn, team.matchesLost, team.goalsScored,
team.goalsReceived, team.dif));
})
.catch(error => {
console.log(error);
});
});
return teams;
});
}
我在这里订阅我的服务以获得团队:
loadStandings() {
let loading = this.loadingCtrl.create({
spinner: 'crescent'
});
loading.present();
this.teamService.getTeams().subscribe(t => {
this.teams = t;
console.log('showing this.teams');
console.log(this.teams); // this.teams declared as any[]
this.teamsOrdered = _.orderBy(this.teams, ['points', 'dif'], ['desc', 'desc']);
console.log('showing this.teamsOrdered');
console.log(this.teamsOrdered); // this.teamsOrdered declared as any[]
});
loading.dismiss();
}
console.log(this.teams)
向我展示了服务返回的预期数组,但console.log(this.teamsOrdered)
为空。
Lodash导入import * as _ from 'lodash';
位于我的ts文件顶部
此处来自控制台的屏幕截图
编辑:我在调试时添加了我的getTeamsService代码(在console.log(this.teams);
上放置一个断点我意识到在从服务调用中检索值之前,this.teams=t
下面的代码正在执行。
如果我不进行调试,那么结果与我的控制台输出屏幕截图相同。
我做错了什么?