RxJava 2 Zip操作在不同的线程中

问题描述 投票:0回答:1

我用RxJava 2创建了一个非常简单的例子(我开发的所有内容都是使用RxJava 1),我发现了下一个我完全不理解的行为。我有下一个带有zip操作的Observable:

Observable.zip(getGame(gameId), getDetail(gameId), getReviews(gameId),
            (game, detail, reviews) -> new GameInfo(game, detail, reviews))
        .subscribeOn(Schedulers.newThread())
        .subscribe(sendGameInfo(asyncResponse));

每个方法都返回一个Observable实例。理论上,我希望每个方法(getGame,getDetail,...)都可以在一个新的Thread中并行执行,但是做一个sysout我注意到所有的时间都是相同的Thread所以它们不是在执行平行。我想这是预期的行为但是如果我想并行制作有一种方法可以做到这一点,而不必在每个可观察的内部定义一个runnable?

非常感谢你。

java rx-java2
1个回答
0
投票

好的,你需要订阅每个Observable

 Observable.zip(getGame(gameId)
                .subscribeOn(Schedulers.from(executor)),
            getDetail(gameId)
                .subscribeOn(Schedulers.from(executor)),
            getReviews(gameId)
                .subscribeOn(Schedulers.from(executor)),
            (game, detail, reviews) -> new GameInfo(game, detail, reviews))
        .subscribeOn(Schedulers.from(executor))
        .subscribe(sendGameInfo(asyncResponse));
© www.soinside.com 2019 - 2024. All rights reserved.