什么是Rxjs
RxJS是使用Observables的响应式编程的库,它使编写异步或基于回调的代码更容易。随着深入你会发现它采用了订阅者模式,其中也带有纯函数的思想,比如Rxjs5中我们把“副作用”都写在.do()中。直到在使用了RxJS6之后才了解其少有人意识到的另一面——流。
什么是流?node中的stream,gulp中的管道流...这里我们不用专业术语来解释,用生活中大家熟悉的的例子来类比,比如“河流”。
河流有什么特点?至少有两个特点:水往低处流,河流虽然可能会蜿蜒盘旋,但是朝向固定,比如我国的长江和黄河就都是由西向东流。在RxJS中数据的流向也是固定的,就是从发送者到订阅者。基本都如下面这种形式:
河道有无数的分支也有无数的合并,在Rxjs中的是,通过不同的操作符将数据流拆分处理聚合又拆分。RxJS6相对于RxJS5(这里指5.5以下的版本,因为pipe函数在RxJS5.5中作为新特性已被引入)来说不仅修改了一部分操作符的名称,同时做了一个较大的改动,引入了管道(pipe)。
这种写法上的变化就带来了用法上的变化,以前的固定“河流”可以通过“管道”(pipe)来控制形成灵活的“水流”。
RxjsvsPromise
Rxjs和传统的Promise在处理异步问题上有什么差距呢?再代码层面什么是Rxjs说到底是要理解什么是Observable。RXJS是Observable的Javascript实现。
promise相较于Rxjs而言功能更单一promise只能将一个数据的状态由pending转换成resoloved或者rejected.而Rxjs可以处理多个数据对应