Java -Reactive Programming vs Event Listener

时间:2015-02-11 05:34:40

标签: java reactive-programming

Reactive Programming与调用事件监听器(鼠标,键)中的函数有何不同,因为两者都是异步事件流,所以Reactive的优势与传统的Event侦听器调用有什么关系?

1 个答案:

答案 0 :(得分:5)

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

但是,让我们备份几个步骤,如果将ObservableIterator(推送与拉动)进行比较,则更容易理解callback-hell是什么。

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

Iterator.hasNext()等同于Observable.onComplete() - 它允许发布者通知订阅者不再需要使用的事件(EventListener模型中缺少一件事)。

对于第三个,Observable.onError()没有等价物,因为使用Iterator,当您尝试获取next()remove()时,您知道可能会获得NoSuchElementException,{ {1}}或UnsupportedOperationException,您可以捕捉并处理其中任何一个,因为您正在同步执行此操作。

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

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