您的位置:网站首页 > IT观察 > 正文

前几天有个同学问我“什么是响应式编程”?另它和函数式编程有啥区别?

类别:IT观察 日期:2017-11-29 21:38:14 人气: 来源:

  前几天有个同学问我,啥叫响应式编程?当时我正在讲课没顾得上回他。今天晚上仔细写个文章回复他,顺便我自己也学习一下。

  响应式编程的英文名,Reactive Programming,那就是针对响应的呗。那啥叫响应呢?你烧水呢,水烧开了,水壶会叫,这就是一下响应了。不要想的太复杂,这些东西都是基于现实世界的需要而来的。

  响应式它是依赖于事件的,响应式的代码它的运行不是按代码的顺序,而是跟多个按时间发生的事件有关。可能你会想,依赖事件?这不就是“回调”嘛,但在响应式编程里,这些按时间排列的事件,被称为“流”,stream

  响应式写的代码,也还是js代码,只不过响应式是一种“响应式开发的思维方式”。你可以理解为它是js代码的新的组织方式。

  刚才咱们提到了,响应式编程依赖于事件,那么再想想在js里事件是什么?当然是异步呀。而事件这个东西在响应式里被做为“事件序列,被称为流,它里面包含的是事件的时间值,这些时间值就是数据。

  在这种思维中,所有的东西,都是“流”。单击鼠标是流,双击鼠标是流,鼠标hover是流,...,全是流stream,你可以操作这些流stream,什么输入,属性,回调等等。

  然后你就是对这些流的各种操作,合并流,过滤流,一个流input另一个流...,没有流stream,就没有响应式编程。

  刚才说了,一个流就是一串事件发生的时间的值的序列。这里面有至少三种东西,一,数据;二,报错error;三,完成。

  你用js写嘛,当然还是异步的操作这些东西,数据,error,win事件。也叫“订阅”;而这些事件的函数,叫“观察者”;流stream就是“主体”,订阅 + 观察者等于啥?观察者模式嘛。所以说,不懂观察者模式,我个人主观觉得不太可能搞懂响应式编程。

  响应式编程,它的关注重点在于“大量的UI事件与数据的互相影响”。啥意思呢,就例如某篇文章,你点个赞,那么一、所有其它人能看到赞;二、作者本人赞数量增加;三、文章权重提升;四、作者排名可能变化;。。。更多,“一个数据的变化,它的影响可能是呈现网状扩散”。

  它的特点吧,一是速度响应快,低延迟;二是健壮性弹性,有故障也能尽量响应;三是资源弹性,访问量大自动加资源,少了自动减;四是有消息自动传递。

  响应式的思想,实际是观察者模式 + (stream与事件源的通信控制)。它的具体实现有一个叫,ReactiveX 是一个基于一系列可观察的异步和基础事件编程组成的一个库。有兴趣的同学可以自行了解一下。

  它和函数式编程的区别,这个简单的说一下,函数式编程就是二个字,“不变”。啥都不变,一经创建永远不变。如果要变,再创建个新的。在它里面函数就是数据的通道。参数确定时,结果是可以预测的。

  推荐:

  

0
0
0
0
0
0
0
0
下一篇:没有资料

相关阅读

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

声明:网站数据来源于网络转载,不代表站长立场,如果侵犯了你的权益,请联系站长删除。

CopyRight 2010-2016 科技创新信息网- All Rights Reserved