RxJava2中出现意外的返回值错误

时间:2018-07-19 22:51:50

标签: rx-java2

需要帮助来解决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(...);的块内,我得到了一个关于返回值的错误。能否请你帮我解决这个问题。谢谢!

1 个答案:

答案 0 :(得分:1)

  

doOnNext,doOnSuccess,doOnError,doOnCompleted

这些被称为副作用运算符,它们无论如何都不会真正影响链,它们可能被用作ex的日志记录机制。

您正在寻找的可能是flatMap,来自文档:

  

FlatMap:将一个Observable发射的项目转换为Observable,然后将这些项目的发射展平为一个Observable。