当前位置: 首页 > 知识库问答 >
问题:

嵌套平面图可观察rxJava

孟茂
2023-03-14

假设我有一个返回列表的博客帖子api

  • 从列表创建可观察
  • 将每个可观察拆分为可观察

我很难弄清楚如何在特定术语上进行多层次的拆分和组合。如果我只需要拆分成页面,我可以做一些类似于平面图(观测e::from). toList()的事情,但这似乎不起作用。任何帮助都将不胜感激。


共有1个答案

葛胡媚
2023-03-14
匿名用户

我认为这样的东西应该可以正常工作,代码非常不言自明。

我从对进行了一些嵌套调用,以将帖子拆分为段落,将段落拆分为单词。然后,我使用可观察的reduce来连接单词以获得单个段落,然后再次使用reduce将段落连接到单个帖子。

Observable<List<String>> blogPostsWithReversedWords(List<String> blogPosts) {
    return Observable.from(blogPosts)
            .flatMap(this::blogPostToParagraphs)
            .toList();
}

Observable<String> blogPostToParagraphs(String post) {
    return Observable.from(post.split("\n"))
            .flatMap(this::paragraphToWords)
            .reduce((prevText, nextParagraph) -> prevText + "\n" + nextParagraph);
}

Observable<String> paragraphToWords(String paragraph) {
    return Observable.from(paragraph.split(" "))
            .map(this::reverseWord)
            .reduce((prevText, nextWord) -> prevText + "\n" + nextWord);
}

String reverseWord(String word) {
    return new StringBuilder(word).reverse().toString();
}

 类似资料:
  • 有人能向我解释一下为什么运算符可以接受返回或的函数吗? 官方文件说: FlatMap运算符通过将您指定的函数应用于源可观察对象发出的每个项目来转换可观察对象,其中该函数返回本身发出项目的可观察对象。 为什么它也可以返回数组? 例如,它们都是有效的: 但这不起作用:

  • 我面临的问题是我需要一个身份验证令牌来创建我的Retrofit服务。我目前使用可观察来获取所述令牌,导致一个相当丑陋的可观察构造: 我忍不住觉得这不是应该做的。我说得对吗?

  • 问题内容: 我一直在阅读Observer模式,以保持UI处于最新状态,但仍然看不到它的用途。即使在我的特定对象中通知了我的MainActivity然后运行update();方法我仍然无法使用Pet对象来获取更新值,因为该对象是在Oncreate中创建的…而我只是无法创建新对象,因为那时变量会有所不同..这是我的实施,它似乎不起作用。 观察者/ MainActivity 可观察/宠物 问题答案: 首

  • 我正在努力理解如何合并两个可观察对象并利用它们合并后的产品。我在mergeMap、switchMap、flatMap、大理石图等上看了无数视频,但我仍然不知道合并观测值是如何工作的。我觉得在使用RxJS的时候,我不会有效率,甚至不会正确。 我有一个要订阅的可观测值,我还想订阅代码中特定表单数组的valueChanges可观测值。但是,我需要确保只有在正确构建表单数组之后才能进行第二次订阅,否则将出

  • 我正在尝试开发我的第一个RxJava例子 我有一个带有文本框和三个按钮的主要活动。第一个按钮初始化单独类中的整数。第二个按钮订阅一个可观察量,该可观察量假定正在观察整数。第三个按钮将整数的值减小 1。 这是我的密码 和班级 当我尝试使用 订阅时,它只是给了我 的值(即 6),然后它给了我完成! 然后我尝试使用,认为我需要使用,只是而不是,但后来我得到了一个返回的空的,然后再次完成! 有人能帮助我从

  • 我有一个场景,其中第二个单声道依赖于first stMono和ThridMono调用依赖于第二个单声道输出。 我写的代码如下。 我怎样才能避免这里的第二个平面图?。有没有办法在没有嵌套平面图的情况下做到这一点。我应该只在满足条件的情况下调用serrdMono。