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高性能库,包含丰富的数据变换方法的函数库
  • 提供管理复杂异步应用非常优秀的方案
posted @ 2018-07-17 21:07  万箭穿心,习惯就好。  阅读(603)  评论(0编辑  收藏  举报