Java -Reactive Programming vs Event Listener

Jee*_*ham 4 java reactive-programming

反应式编程与调用事件监听器(鼠标,键)中的函数有何不同,因为两者都是异步事件流,所以Reactive的优势是什么,而不是传统的事件监听器调用?

alf*_*sin 5

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

但是,让我们回顾几步,如果将它与Iterator(推送与拉动)进行比较,则更容易理解Observable是什么.

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

Iterator.hasNext()相当于Observable.onComplete()- 它允许发布者通知订阅者没有更多事件要消耗(EventListener模型中缺少一件事).

对于第三个,Observable.onError()没有等价物,因为有了Iterator,当你试图得到next()或者remove()你知道你可能得到的NoSuchElementException,UnsupportedOperationException或者IllegalStateException你可以捕捉并处理它们中的任何一个,因为你是同步地做的.

对于发布者,如果发生错误,则无法通知侦听器/订阅者,然后崩溃.onError()是最后一个缺失部分,以便Observable可以正常处理任何错误.

总而言之,Reactive Java开始修复事件模型中缺少的部分很长一段时间.通过提供缺少的部分,并提供函数式编程风格(支持map,flatmap,filter等),它有助于以自然,可读的方式编写异步调用,从而减少编程风格必需时的样板代码(例如嵌套的-loops)并创建回调地狱.