RxJS
事件总线
EventBus,消息或事件流动的管道,集中式事件处理机制:负责订阅者、事件等信息的存储,同时处理事件的流动和分发。
- 基于观察者模式思想,摒弃观察者模式需要显式注册回调的缺点
- 订阅者和发布者解耦
- 简化组件间通信
至于观察者模式,发布订阅模式有两种方式:
- 简单方式:Publisher维护一个订阅者列表,当状态改变时循环遍历列表通知订阅者
- 委托方式:Publisher定义事件委托,Subscriber实现委托
推荐委托方式。
响应式编程
Reactive Programming(RP),基于异步数据流交互的编程范式,本质上是对数据流或某种变化所作出的反应。
- Stream:按时间排序的(即将发生的)事件的序列,响应式编程的核心
事件驱动:用某个函数订阅事件流,每当有一个新的事件时,流将激活这个函数,以使代码对事件作出响应。
- 观察值:某个函数
- 被观察者:事件流
与数组相比,数组是在空间上的值的序列,事件流是随时间的值的序列。
Promise对象可以看作是一个只有一个返回值的被观察者。
// req stream var requestStream = Rx.Observable.just(requestUrl); // ret stream var responseStream = requestStream .flatMap(function(requestUrl) { return Rx.Observable.fromPromise(jQuery.getJSON(requestUrl)); }); // 订阅 responseStream.subscribe(function(response) { // render `response` to the DOM however you wish });
具体讲解请参见:https://www.cnblogs.com/android-blogs/p/5586395.html
RxJS
- 基于响应式编程实现的JavaScript高性能库,包含丰富的数据变换方法的函数库
- 提供管理复杂异步应用非常优秀的方案
---
纵使山重水复,亦会柳暗花明
sunqh1991@163.com
欢迎关注,互相交流