V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lhx2008
V2EX  ›  问与答

响应式编程/流式编程 的疑惑,下游如何隔代获取上游数据的引用

  •  
  •   lhx2008 · 2018-09-04 21:41:27 +08:00 · 1431 次点击
    这是一个创建于 2270 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在研究 Spring 家的 Reactor 3 (该库也由 Rxjava 的贡献者编写),据文档说是回调地域的终结者。

    但是,有一个场景,这种响应式编程却很难写出回调的一种效果。就是下层 隔代获取 上游数据的引用。

    在回调里面:
    a -> 获取到 obj A
      then -> 获取到 obj B
       then -> 获取到 obj C
        then -> 全部成功,执行 function (A,  B,  C)
    回调的写法可以一次性拿到所有上游数据的引用

    然而在响应式编程里面却没有什么好办法。我想的只能是转成一个列表
    a -> 获取到 obj A,加到列表
    b -> 获取到 obj B, 加到列表
    c -> 获取到 obj C, 加到列表
    d -> do(A,B,C)

    不过显然这样写没有什么意义,而且是很不优雅的写法。

    我在 https://stackoverflow.com/questions/28176072/in-rxjava-how-to-pass-a-variable-along-when-chaining-observables 看到也有人在讨论,不过解答显然也谈不上优雅
    5 条回复    2018-09-06 20:40:03 +08:00
    nathanw
        1
    nathanw  
       2018-09-04 23:14:37 +08:00 via iPhone   ❤️ 1
    找找有没类似 zip 的方法
    lhx2008
        2
    lhx2008  
    OP
       2018-09-04 23:21:18 +08:00
    @nathanw zip 有的,不过只能两个,后面我认真看了下 stackoverflow 上面那个方法也还可以,再把里面的东西抽成几个函数。
    sagaxu
        3
    sagaxu  
       2018-09-05 00:00:43 +08:00 via Android
    定义几个泛型容器,Pair<A,B>,Triple<A,B,C>
    kefengong
        4
    kefengong  
       2018-09-05 00:14:24 +08:00 via Android
    buffer ?
    lhx2008
        5
    lhx2008  
    OP
       2018-09-06 20:40:03 +08:00
    @nathanw 是我用错了,zip 有的,而且可以发异步
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2824 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 13:00 · PVG 21:00 · LAX 05:00 · JFK 08:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.