Как реактивное программирование отличается от вызова функции в прослушивателе событий (мышь, клавиша), потому что оба являются своего рода асинхронным потоком событий, так что вызывает вызов Reactive over традиционные прослушиватели событий?Java -Reactive Programming vs Event Listener
ответ
слушатель событий имеет фактически только подмножество функциональных возможностей, предоставляемых RxJava, и это именно проблема, которую он пытается решить:
Но давайте вернемся на несколько шагов, это легче понять, что такое Observable, если вы сравниваете его с Iterator (push vs. pull).
Iterator.next()
равнозначно Observable.onNext()
- когда происходит следующее событие/событие - потребляйте его.
Iterator.hasNext()
- это эквивалент Observable.onComplete()
- он позволяет издателю уведомить абонента о том, что больше нет событий для потребления (одна вещь, отсутствующая в модели EventListener).
Для третьего, Observable.onError()
нет эквивалента, потому что с итератором, когда вы пытаетесь получить next()
или remove()
вы знаете, что вы можете получить NoSuchElementException
, UnsupportedOperationException
или IllegalStateException
и вы можете перехватывать и обрабатывать любого из них, так как вы делая это синхронно.
Для издателя при возникновении ошибки нет возможности уведомить пользователя-слушателя/абонента, а затем об авариях. onError()
- последняя отсутствующая часть, которая была сделана так, чтобы Observable мог включить грациозную обработку любой ошибки.
Подводя итог, Reactive Java приступила к исправлению деталей, отсутствовавших в модели событий в течение длительного времени. Предоставляя эти недостающие части и предоставляя функциональный стиль программирования (поддерживает карту, плоскую карту, фильтр и т. Д.), Он помогает создавать асинхронные вызовы естественным, читаемым способом, уменьшая шаблонный код, который необходим, когда стиль программирования является обязательным (например, вложенный в -loops) и который создает callback-hell.
информативная благодарность, можете ли вы предложить какой-то сайт, чтобы начать реактивное программирование. – Jeevanantham
@ jerith2 первые две ссылки в моем ответе будут хорошим началом! – alfasin
Как это дублируется, когда связанный вопрос java * script * – LegendLength