栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在RxJava中进行递归可观察调用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在RxJava中进行递归可观察调用?

这实际上与文章中描述的相同:

Observable<Comment> getInnerComments(Comment comment) {    if (comment.childIds.length > 0)        return Observable.merge(     Observable.just(comment),     Observable.from(comment.childIds)  .flatMap(id -> getComments(id))  .flatMap(this::getInnerComments));    return Observable.just(comment);}public static void main(String[] args) {    getComments(1)          .flatMap(this::getInnerComments)          .subscribe(c -> System.out.println(comment.toString()));}

我先从id =
1的评论开始,然后将其传递给

getInnerComments()
。该
getInnerComments()
检查如果评论有孩子。如果是这样,它将遍历每个子ID(
Observable#from
),并使用您的
getComments(int)
API
加载每个子ID
。然后,将每个孩子传递给,
getInnerComments()
以执行相同的过程。如果评论中没有子项,则使用会立即将其返回
Observable#just

这是伪代码,尚未经过测试,但是您应该明白这一点。


下面是一个如何获取所有评论,然后将其汇总为一个示例的示例

List<Comment>

getNews(99)        .flatMap(news -> Observable.from(news.commentIds))        .flatMap(commentId -> getComments(commentId))        .flatMap(comment -> getInnerComments(comment))        .toList()        .subscribe(commentList -> { });


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495150.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号