【发布时间】:2019-11-25 10:01:04
【问题描述】:
getEnrolledPlayers 应该从数据库中获取一个“玩家”对象数组,然后将其传递给 matchMaking 函数。但是,它没有正确通过。
我尝试添加 observables,玩转订阅
initializeEvent(eventId: string) {
const enrolledPlayers: PlayerStat[] = [];
this.getEnrolledPlayers(eventId)
.subscribe((playerIds: string[]) => {
for (const playerId of playerIds) {
this.dataService.fetchSinglePlayer(playerId)
.subscribe((playerStat: PlayerStat) => enrolledPlayers.push(playerStat));
}
this.matchMaking(enrolledPlayers);
});
}
当我调用这一系列异步函数时,注册玩家[] 被正确计算(7 个元素的数组),但它没有被正确调用到 matchMaking() 函数。我认为这是因为异步运行时。
【问题讨论】:
-
` this.matchMaking(enrolledPlayers);` 应该在你的内部
subscribe()函数中 -
@HaifengZhang 你
mergeMap会更好
标签: javascript typescript asynchronous rxjs observable