需要帮助来解决RxJava中返回值的问题。所以,这是我到目前为止所做的:
private Observable<Boolean> updatedMenuItems() {
return Observable.fromIterable(getAliases())
.doOnNext(alias -> {
return ApiRepository.getMenuItemBlocks(alias)
.subscribeOn(Schedulers.io())
.flatMapIterable(list -> list)
.map(item -> item.getFileTimeStamp() == null ? "" : item.getFileTimeStamp().toString())
.toList()
.doOnSuccess(apiContents -> {
return Observable.fromCallable(DataStoreRepository::loadMenuItemsBlock)
.subscribeOn(Schedulers.io())
.flatMapIterable(list -> list)
.map(item -> item.fileTimeStamp == null ? "" : item.fileTimeStamp.toString())
.toList()
.map(dbContents -> {
return DBUtil.isContentEqual(dbContents, apiContents);
});
});
});
}
我需要从该方法返回Observable<Boolean>
数据类型,但是在.doOnSuccess(...);
的块内,我得到了一个关于返回值的错误。能否请你帮我解决这个问题。谢谢!
答案 0 :(得分:1)
doOnNext,doOnSuccess,doOnError,doOnCompleted
这些被称为副作用运算符,它们无论如何都不会真正影响链,它们可能被用作ex的日志记录机制。
您正在寻找的可能是flatMap
,来自文档:
FlatMap:将一个Observable发射的项目转换为Observable,然后将这些项目的发射展平为一个Observable。