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

2018-09-04 21:41:27 +08:00
 lhx2008
最近在研究 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 看到也有人在讨论,不过解答显然也谈不上优雅
1416 次点击
所在节点    问与答
5 条回复
nathanw
2018-09-04 23:14:37 +08:00
找找有没类似 zip 的方法
lhx2008
2018-09-04 23:21:18 +08:00
@nathanw zip 有的,不过只能两个,后面我认真看了下 stackoverflow 上面那个方法也还可以,再把里面的东西抽成几个函数。
sagaxu
2018-09-05 00:00:43 +08:00
定义几个泛型容器,Pair<A,B>,Triple<A,B,C>
kefengong
2018-09-05 00:14:24 +08:00
buffer ?
lhx2008
2018-09-06 20:40:03 +08:00
@nathanw 是我用错了,zip 有的,而且可以发异步

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/486164

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX