首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连续链接多个可观测数据

连续链接多个可观测数据
EN

Stack Overflow用户
提问于 2017-05-04 00:22:50
回答 1查看 1.2K关注 0票数 3

将连续执行的5-6个观测数据链接在一起的最佳实践是什么?例如,我有Single2 1->Single2 2->. ->Single6。

Single2取决于Single2 1的结果。Single3依赖于Single2结果等。

我一直在使用嵌套的flatMap,但是代码变得非常长,可读性很低。

这个案子的最佳指导方针是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-04 05:22:13

您不需要嵌套flatMap调用,只需将它们链接起来,就可以获得清晰的可观察流链:

代码语言:javascript
复制
 single1
    .flatMap(new Func1<Item1, Single<Item2>>() {
        @Override
        public Single<Item2> call(Item1 obj) {
            return getSingle2(obj);
        }
    })
    .flatMap(new Func1<Item2, Single<Item3>>() {
        @Override
        public Single<Item3> call(Item2 obj) {
            return getSingle3(obj);
        }
    })
    .flatMap(new Func1<Item3, Single<Item4>>() {
        @Override
        public Single<Item4> call(Item3 obj) {
            return getSingle4(obj);
        }
    })
    .flatMap(new Func1<Item4, Single<Item5>>() {
        @Override
        public Single<Item5> call(Item4 obj) {
            return getSingle5(obj);
        }
    })
    .flatMap(new Func1<Item5, Single<Item6>>() {
        @Override
        public Single<Item6> call(Item5 obj) {
            return getSingle6(obj);
        }
    });

使用lambda,它可以变得非常整洁:

代码语言:javascript
复制
single1
    .flatMap(this::getSingle2)
    .flatMap(this::getSingle3)
    .flatMap(this::getSingle4)
    .flatMap(this::getSingle5)
    .flatMap(this::getSingle6);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43771923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档