前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >前几天有个同学问我,“什么是响应式编程”?另,它和函数式编程有啥区别?

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

作者头像
web前端教室
发布于 2018-02-07 04:06:26
发布于 2018-02-07 04:06:26
1.4K0
举报
文章被收录于专栏:web前端教室web前端教室

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

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

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

简单的讲,响应式中的事件序列类似于js的数组,它里面的事件流就是时间的序列。

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

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

那么可以说,响应式编程,就是异步的数据流的开发。

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

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

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

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

最快速度搞懂:Js观察者模式,为学习vue源码而准备

它有啥用?干嘛的?

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

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

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

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

函数式编程的东西,等以后另外单独再写吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 web前端教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
什么是响应式编程?
本文来源:https://blog.csdn.net/get_set/article/details/79455258
Java3y
2019/10/15
9170
什么是响应式编程?
【响应式编程的思维艺术】 (2)响应式Vs面向对象
原文对很多基础却核心的概念都有详细的讲解,本文不再赘述。需要注意的是,理解原理是一方面,但能够熟练使用运算符来转换或查询流信息是需要很长时间积累的,建议在学习过程中,每次遇到新的运算符就主动查阅资料理解其用法,这样积少成多慢慢地就总结出开发模(tao)式(lu)了。
大史不说话
2018/12/24
1.2K0
翻译连载 | 第 10 章:异步的函数式(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 第 10 章:异步的函数式(下) 响应式函数式编程 为了理解如何在2个值
iKcamp
2018/01/04
9600
✨从响应式讲起,Observable:穿个马甲你就不认识啦?(附实战)
本文为稀土掘金技术社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究!
掘金安东尼
2022/11/16
1.2K0
✨从响应式讲起,Observable:穿个马甲你就不认识啦?(附实战)
从架构师的角度带你把“响应式编程”给一次性搞明白,果然绝绝子
◆ 响应式编程详解 响应式编程是一种基于异步数据流驱动、响应式、使用声明式范式的编程模型,需要遵循一定的响应式编程开发规范,并且有具体的类库实现。响应式编程基于数据流而不是控制流进行业务逻辑的推进。 ◆ 响应式编程与设计模式 在面向对象编程语言中,响应式编程通常以观察者模式呈现。将响应式流模式和迭代器模式比较,其主要区别是,迭代器基于“拉”模式,而响应式流基于“推”模式。 在命令编程范式中,开发者掌握控制流,使用迭代器遍历“数据”,使用hasNext()函数判断数据是否遍历完成,使用next()函数访问下一
IT大咖说
2022/09/08
4.6K0
从架构师的角度带你把“响应式编程”给一次性搞明白,果然绝绝子
响应式编程
之前发了一篇Reactor到WebFlux,WebFlux整套技术栈是由Spring提供的,Pivotal致力于解决java在云平台上的工作负载。
春哥大魔王
2019/11/19
1.4K0
响应式编程知多少 | Rx.NET 了解下
关于Reactive(本文统一译作响应式),有一个The Reactive Manifesto【响应式宣言】:响应式系统(Reactive System)具备以下特质:即时响应性(Responsive)、回弹性(Resilient)、弹性(Elastic)以及消息驱动(Message Driven)。
圣杰
2019/05/27
1.1K0
.NET 响应式编程 System.Reactive 系列文章(一):基础概念
在现代软件开发中,处理异步事件和数据流已经成为常见的需求,比如用户输入、网络请求、传感器数据等。这些数据流通常是无限的、异步的、实时的,而传统的编程方式往往无法优雅地处理这些情况。响应式编程(Reactive Programming)为我们提供了一种新的思路,帮助开发者更自然、更高效地管理数据流和异步事件。
郑子铭
2025/03/04
940
.NET 响应式编程 System.Reactive 系列文章(一):基础概念
响应式编程中 Stream 对象的实现原理
腾讯IVWEB团队
2017/03/13
2K0
响应式编程——Reactor
Spring5更新后,其中有一个号称是可以替代SpringMVC的功能——Spring WebFlux,其是一个响应式变成框架。WebFlux是Spring5封装的Reactor框架。Reactor 是一个用于JVM的完全非阻塞的响应式编程框架,具备高效的需求管理(即对 “背压(backpressure)”的控制)能力。它与 Java 8 函数式 API 直接集成,比如 CompletableFuture, Stream, 以及 Duration。它提供了异步序列 API Flux(用于[N]个元素)和 Mono(用于 [0|1]个元素),并完全遵循和实现了“响应式扩展规范”(Reactive Extensions Specification)。
黑洞代码
2021/01/14
1.7K0
响应式编程——Reactor
你就是函数响应式编程(FRP)啊?!【附 RxJS 实战】
英文全称是:Functional Reactive Programming,翻译过来就是:函数响应式编程。
掘金安东尼
2022/09/19
8910
你就是函数响应式编程(FRP)啊?!【附 RxJS 实战】
RxJS 函数式与响应式编程
简单说,”函数式编程”是一种 “编程范式”(programming paradigm),也就是如何编写程序的方法论。
阿宝哥
2019/11/05
1.1K0
【Spring底层原理高级进阶】基于Spring Boot和Spring WebFlux的实时推荐系统的核心:响应式编程与 WebFlux 的颠覆性变革
传统的Spring MVC架构是一种基于Java的Web应用程序开发框架,它遵循了MVC(Model-View-Controller)设计模式。下面将介绍传统Spring MVC架构的基本原理和组件:
苏泽
2024/03/01
3710
响应式和函数式,两个容易混淆的概念
传统的编程方式,是顺序执行的,上一个任务没有完成的话需要等待直至完成之后才会执行下一个任务。无论是提升机器的性能还是代码的性能,本质上都需要依赖上一个任务的完成。如果需要响应迅速,就得把同步执行的方式换成异步,方法执行变成消息发送。这变成了异步编程的方式,它是响应式编程的重要特性之一。
fengzhizi715
2018/08/24
1.3K0
响应式编程
在传统的请求响应模型中,每个客户端请求会分配一个线程,这些线程会一直等待直到请求完成,这可能导致资源的浪费和性能瓶颈。响应式编程使用异步非阻塞的方式,通过订阅和处理事件流来处理请求。
Jimmy_is_jimmy
2023/07/31
3720
响应式编程
Reactor响应式编程 之 简介
Reactor 项目始于 2012 年。 经过长时间的内部孵化,于 2013 年发布 Reactor 1.x 版本。 Reactor 1 在各种架构下都能成功部署,包括开源的(如 Meltdown)和商业的(如 Pivotal RTI)。2014年,通过与一些新兴的响应式数据流规范合作,重新设计并于 2015 年 4 月发布 Reactor 2.0 版本。
伍六七AI编程
2022/11/02
1.3K0
前端中的函数式编程
导语 前端的技术革新从来没有停止过,但从最近的趋势来看,貌似有一个“新”名词出现,那就是函数式编程(FP,functional programming)。vue、react这些热门的框架都多多少少有点
陈柏信
2017/08/30
1.5K0
函数式编程,真香
最开始接触函数式编程的时候是在小米工作的时候,那个时候看老大以前写的代码各种 compose,然后一些 ramda 的一些工具函数,看着很吃力,然后极力吐槽函数式编程,现在回想起来,那个时候的自己真的是见识短浅,只想说,'真香'。
桃翁
2018/12/28
8310
函数式编程,真香
响应式编程|Kotlin与LiveData扩展函数实践技巧
前半部分介绍响应式编程的一些思想,后半部分介绍我们如何基于LiveData实现数据流设计的落地实践。 "一切都是对象 ( Everything is an Object! )" 当使用面向对象(Object-Oriented)的思维去开发时,我们被教导:“一切都是对象 ( Everything is an Object! )”。 我们自顶向下地分解问题,将模块封装为交互(method) 和状态(property)的集合,通过不断将模块拆分成更细的维度,最后形成一个个具有明确定义的内聚性的类(Class) 
QQ音乐技术团队
2021/03/30
1.7K0
剖析响应式编程的本质
基于Actor的响应式编程计划分为三部分,第一部分剖析响应式编程的本质思想,为大家介绍何谓响应式编程(Reactive Programming)。第二部分则结合两个案例来讲解如何在AKKA中实现响应式编程。第三部分则是这个主题的扩展,在介绍Reactive Manifesto的同时,介绍进行响应式编程更为主流的ReactiveX框架。 响应式编程(Reactive Programming)到底是什么?从名词定义来讲,中文的响应式并没有很好地展现Reactive的本意。响应这个词语是一个中性词,本身没有任何倾
张逸
2018/03/07
1.8K0
剖析响应式编程的本质
推荐阅读
相关推荐
什么是响应式编程?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文