据我所知,promise会返回未来,数据流也会返回未来,我相信数据流是对promise的抽象,并且当它所依赖的值变为可用时触发。数据流是否像承诺的图形结构?有人能说清楚吗?
答案 0 :(得分:1)
是的,您可以将数据流视为未来图表。所以这个数据流图:
可以用期货(在Clojure中)实现,如下所示:
user=> (let [a (future (+ 1 2))
#_=> b (future (+ 3 4))]
#_=> (+ @a @b))
10
(此示例来自Seven Concurrency Models in Seven Weeks)。
尽管如此,虽然两者之间存在概念上的相似之处,但期货很少用于实现纯数据流,因为它们通常过于昂贵(使用这样的简单加法操作肯定太贵了)。
如果您对数据流特别感兴趣,可以查看Oz language。另一种具有概念相似性的方法是使用,例如,Microsoft的Rx (Reactive Extensions)库进行反应式编程。