Rxjava flatMap 与 map return 参数之间的区别

Rxjava difference between flatMap just vs map return param

这有什么区别吗:

public Observable<List<MessageDb>> getLastXMessages(int x, String userToGetMessagesFrom){
    return MainApplication.getInstance().getRiotXmppService().getRiotConnectionManager().getConnectedUser()
            .flatMap(connectedUser -> {
                QueryBuilder qb = 
        ... 
        ...         
                return Observable.just(qb.list());
            });
}

或者这个

public Observable<List<MessageDb>> getLastXMessages(int x, String userToGetMessagesFrom){
    return MainApplication.getInstance().getRiotXmppService().getRiotConnectionManager().getConnectedUser()
            .map(connectedUser -> {
                QueryBuilder qb = 
        ... 
        ...         
                return qb.list();
            });
}

是否有更好的解决方案,或者两者都可以。

FlatMap 的行为与 map 非常相似,不同之处在于它 returns 本身是一个可观察对象,因此它非常适合映射异步操作。 Map 不必发出与源 Observable 相同类型的项目。

在实际意义上,Map 只是对链式响应进行转换(不返回 Observable);而 FlatMap returns 是一个 Observable,这就是为什么如果你打算在方法内部进行异步调用,那么推荐使用 FlatMap,所以:

  • 映射returns类型为T的对象

  • FlatMap returns 一个 Observable。

当然,两者都可以正常工作。如果您不打算异步执行操作,那么我更喜欢 map,因为它的开销比 flatMap 少。看起来您的示例中涉及网络调用(?),开销可能微不足道。