将一个可观察的结果合并到另一个

时间:2018-02-23 17:29:17

标签: android rx-java2 rx-android

我有一个我无法通过RxJava2运营商解决的情况。

我有一个"匹配"我从Room取回。这是我的Match POJO。

public class Match {
@PrimaryKey
private int id;

@Ignore
Team rivalTeam;

}

这是我桌上的Dao。

@Dao
public interface MatchDao {
    @Query("select * from `match` where homeTeamId= :homeTeamId")
    Single<List<Match>> getMatchesByTeamId(int homeTeamId);

}

我的目标是创建一个observable,它将拉出这些匹配,然后将它与将返回rivalTeam的observable合并。

这是我的团队Dao

@Dao
public interface TeamDao {

    @Query("select * from teams where id = :teamId")
    Single<Team> getTeamById(int teamId);

}

我所取得的就是这个。

private Single<List<Match>> fetchMatches(Team team) {
        return matchDao.
                getMatchesByTeamId(team.getId()).toObservable().
                flatMapIterable(matches -> matches).
                map(match -> teamDao.getTeamById(**match.getRivalId()**).toObservable() // this doesn't work ofcourse since map can't return an observable.);
    }

我知道我必须拉下两个可观察者,但是我怎么会这样做,因为第二个观察者依赖于第一个? 如果zip可以在单一来源上工作,我本来可以做到 拉链方法中的match.setRivalTeam(团队)。

提示?

0 个答案:

没有答案