今天来一篇RxJS的科普。
什么是RxJS
先看RxJS这个词,RxJS = Rx + JS,JS就是Javascript,那么Rx又是什么呢?
Rx = Reactive extension, 最早是由微软开发的一套软件库,用于处理异步数据流和事件流。后来,ReactiveX被移植到了多种编程语言中,如RxJS(Javascript)、RxJava(Java)、RxSwift(Swift)等。
下面是Wikipedia对ReactiveX的定义:ReactiveX is an API for asynchronous programming with observable streams。
RxJS就是Rx的JavaScript版本。
RxJS的核心概念
Rx中使用了两个设计模式,观察者模式和迭代器模式。Rx还大量使用了函数式编程的思想。
Observable
这是RxJS中最终要的概念,没有之一,Observable,顾名思义,就是可观察对象,我们看一个现实中的例子,你在看风景,那么风景就是一个Observable,你在观察风景,风景发生了变化,你就会感知到,这就是Observable的概念。
Observer
Observer - 观察者,还是以现实中的例子来解释,你在看风景,你就是一个Observer。
Subscription
Subscription - 订阅,订阅是联系Observable和Observer的桥梁,我们常说,Observable发生变化时,Observer会收到通知,那么Observer如何收到通知呢?就是通过订阅机制来实现的。
Operators
Operators - 操作符,RxJS提供了许多操作符,用于对Observable进行操作,比如map
、filter
、reduce
等。Operators都是纯函数,它们不会改变原始的Observable,而是返回一个新的Observable。
Subject
Subject - 主题,Subject是一种特殊的Observable,它允许将值多播给多个Observer。也就是说,它是用来实现多播的,同时,Subject也是Observer。
Scheduler
Scheduler - 调度器,RxJS提供了调度器,用于控制Observable何时开始发送通知。