【问题标题】:Java -Reactive Programming vs Event Listener [duplicate]Java - 反应式编程与事件监听器[重复]
【发布时间】:2016-12-13 04:38:07
【问题描述】:

响应式编程与在事件侦听器(鼠标、键)中调用函数有何不同,因为两者都是异步事件流,那么响应式编程与传统事件侦听器调用相比有何优势?

【问题讨论】:

  • 当链接的问题是java script时它是如何重复的

标签: java reactive-programming


【解决方案1】:

事件监听器实际上只有RxJava 提供的功能的一个子集,而这正是它试图解决的问题:

但让我们退后几步,如果您将 ObservableIterator 进行比较(推送与拉取),会更容易理解。

Iterator.next() 相当于Observable.onNext() - 当下一个项目/事件发生时 - 消费它。

Iterator.hasNext() 等价于Observable.onComplete() - 它允许发布者通知订阅者没有更多事件可以使用(EventListener 模型中缺少的一件事)。

对于第三个,Observable.onError() 没有等价物,因为使用 Iterator,当您尝试获取 next()remove() 时,您知道您可能会得到 NoSuchElementExceptionUnsupportedOperationExceptionIllegalStateException,而您可以捕获并处理其中的任何一个,因为您是同步进行的。

对于发布者,如果发生错误,除了崩溃之外,无法通知侦听器/订阅者。 onError() 是最后一个缺失的部分,以便 Observable 可以优雅地处理任何错误。

总而言之,Reactive Java 是为了修复事件模型中长期缺失的部分。通过提供那些缺失的部分,并通过提供函数式编程风格(支持 map、flatmap、filter 等),它有助于以一种自然、可读的方式组合异步调用,从而减少当编程风格是命令式时所必需的样板代码(例如,嵌套-loops) 并创建callback-hell

【讨论】:

  • 内容丰富的谢谢,你能推荐一些网站来开始反应式编程吗?
  • @jerith2 我回答中的前两个链接将是一个好的开始!
猜你喜欢
  • 2018-10-18
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 2012-12-09
相关资源
最近更新 更多