我目前有getTeams
,它返回一个teamIds数组。要致电getTeams
,我必须致电authbus.getAuth()
获取凭据。这是代码:
public Observable<WebResponse<Team>> getTeams() {
return authbus.getAuth().take(1).flatMap((UserInfo info) ->
webApi.getTeams("Bearer " + info.getTokenSet().getAccessToken())
);
}
但现在我需要取getTeams
的结果并调用getTeam
并传入第一个TeamId。问题是我需要将身份验证令牌传递到getTeam
,就像我对getTeams
所做的那样。如何将来自getTeam
的{{1}}和来自getAuth
的teamId的getTeams
链接起来?
有关背景信息,API正在幕后更改。旧的API通过调用getTeam
返回了我需要的所有团队数据,但是新API在两次调用之间分配 - getTeams
以获得一组团队,然后调用getTeam(teamId)
来获取团队的细节。现在我们只会从getTeams
获得一个团队,所以我想在一个地方自动调用getTeam(teamId)
,这样我就不必在代码中更新几个不同的地方了。接下来,他们将更新UI以循环每个团队并为每个团队调用getTeam(teamId)
。这将需要相当大的应用更改,因此此时可以更改代码以便为每个团队调用getTeam
。
这是我编写它的尝试,它不能编译:
public Observable<WebResponse<Team>> getTeams() {
return authbus.getAuth().take(1).flatMap((UserInfo info) ->
webApi.getTeams("Bearer " + info.getTokenSet().getAccessToken()).take(1).flatMap((Teams teams) ->
webApi.getTeam(info.getTokenSet().getAccessToken(), teams.getTeamIds()[0])
));
}
编辑:这是第二次尝试。它抱怨“无法推断功能界面类型”
public Observable<WebResponse<Team>> getTeam() {
return authbus.getAuth().take(1).flatMap((UserInfo info) ->
webApi.getTeams("Bearer " + info.getTokenSet().getAccessToken()).take(1).<Teams>flatMap((Teams teams) ->
webApi.getTeam(info.getTokenSet().getAccessToken(), teams.getTeamIds()[0])
));
}