Rxjs理解

说到RxJs就先说说历史,Rx是Reactive Extension的简称,它是一套实现响应式编程的一套工具,或者说API,关于Rx的概念:

Rx的概念最初由微软公司实现并开源,也就是Rx.NET,因为Rx带来的编程⽅式⼤⼤改进了异步编程模型,在.NET之后,众多开发者在其他平台和语⾔上也实现了Rx的类库。可见,Rx其实是⼀个⼤家族,在这个⼤家族中,还有⽤Java实现的RxJava,⽤C++实现的RxCpp,⽤Ruby实现的Rx.rb,⽤Python实现的RxPy,当然,还有这个⼤家族中最年长的Rx.NET。而RxJS,也就是Rx的JavaScript语⾔实现。

Rx的诞生主要目的是解决异步处理的问题,所以并不代表它只能处理异步问题。所有语言都并不是天生支持响应式编程,所以有以上的各类语言的实现。
RxJs兼具函数式编程响应式编程两者的特点

函数式编程就是指用函数来处理问题,这里的函数不是一般上的函数,它要具有:声明式、纯函数、数据不可变性的三个特点。

声明式指的是做什么,而不关心怎么做,比如下面的函数,它要解决的问题是把传入的数组挨个加1,至于怎么做它不关心,它把数组交给map函数,由map去处理,最后拿到数据。

function addOne(arr) {
	return arr.map( function(item) { return item + 1 } );
}

而如果我们不使用map函数,使用传统的方式就是通过for循环遍历每一项,然后加1返回,这就是与声明式编程对应的命令式编程,它需要关心每一步需要怎么做。

纯函数指的是:

1、函数的执⾏过程完全由输⼊参数决定,不会受除参数之外的任何数据影响。
2、函数不会修改任何外部状态,⽐如修改全局变量或传⼊的参数对象。

数据不可变性指的是:保持原有数据不变,产⽣⼀个新的数据,也就是说如果需要数据改变,那么不必改变原始数据,而是产生一个新的数据来供我们使用。

响应式编程就是根据输入的数据进行相应的响应,而数据则是变化的。

学习RxJs有两个重要的概念,Observable:被观察者;Observer:观察者;被观察者和观察者之间通过subscribe函数进行关联,下图解释了它们之间的关联,也是它们之间一个很原始的使用
在这里插入图片描述
参考:《深入浅出rxjs》

发布了28 篇原创文章 · 获赞 1 · 访问量 8725

猜你喜欢

转载自blog.csdn.net/moqiuqin/article/details/96484440