Android flatMap just与map return param之间的Rxjava差异
这两者之间有什么区别吗:Android flatMap just与map return param之间的Rxjava差异,android,rx-java,Android,Rx Java,这两者之间有什么区别吗: public Observable<List<MessageDb>> getLastXMessages(int x, String userToGetMessagesFrom){ return MainApplication.getInstance().getRiotXmppService().getRiotConnectionManager().getConnectedUser() .flatMap(connec
public Observable<List<MessageDb>> getLastXMessages(int x, String userToGetMessagesFrom){
return MainApplication.getInstance().getRiotXmppService().getRiotConnectionManager().getConnectedUser()
.flatMap(connectedUser -> {
QueryBuilder qb =
...
...
return Observable.just(qb.list());
});
}
公共可观察的getLastXMessages(int x,字符串userToGetMessagesFrom){
返回MainApplication.getInstance().getRiotXmppService().getRiotConnectionManager().getConnectedUser()
.flatMap(连接用户->{
QueryBuilder qb=
...
...
返回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();
});
}
公共可观察的getLastXMessages(int x,字符串userToGetMessagesFrom){
返回MainApplication.getInstance().getRiotXmppService().getRiotConnectionManager().getConnectedUser()
.map(connectedUser->{
QueryBuilder qb=
...
...
返回qb.list();
});
}
是否有更好的解决方案,或者两者都很好。FlatMap的行为非常类似于map,区别在于它本身返回一个可观察的对象,因此它非常适合在异步操作上进行映射。映射不必发射与源可观测项类型相同的项 在实际意义上,Map只是在链式响应上进行转换(不返回可观察值);虽然FlatMap返回一个Observable,但如果您计划在方法内部进行异步调用,则建议使用FlatMap,因此:
- Map返回类型为T的对象
- FlatMap返回一个可观察值
map
,因为它比flatMap
的开销小。您的示例(?)中似乎涉及到网络调用,因此开销可能是微不足道的