rxjs学习(一)响应式编程理解

响应式编程理解

响应式编程是为了解决异步的问题,异步的问题是指因为回调导致的代码难以维护的问题,一般在非常多异步的项目中 这种问题会恶化

我们来思考一下异步的产生,异步是因为一个对象与另外一个对象交互,因为需要等待,所以增加回调函数处理等待结果,所以我们可以想象一下 假如一个系统中有10个对象,然后这些对象之间都会互相交互,而且还存在顺序的问题,当然最终代码肯定是可以写出来的,不过很难以维护,这不仅是回调的问题,加入a对象与b对象交互,那么我们把a对象和b对象用线连起来,表示他们之间的一段业务联系,如果存在a b c d e f g7个对象,然后他们之间互相都有线连起来,分别表示不同的业务线,这些业务线构成了整个业务逻辑,是非常混乱的,看 即使我们有面向对象,把代码进行了解耦,但是业务是有联系的,代码虽然分开了,但是业务依然混乱,当几天后,我们不得不在每个对象之间的连线上 寻找相互之间的关系,这是非常痛苦的。

所以,响应式编程主要是解决这个问题的,我用一个例子来生动的描述响应式编程,假如有一天 我们想要构建一个世界,这个世界里面 狗 猫 老鼠 人等对象,然后这个时候老板给了第一个需求 猫捉老鼠跑,那我们肯定开始写程序了,猫发送一个消息给老鼠,老鼠接到消息后,用行动回应了猫,猫接到的反馈是 老鼠跑了,那猫下一步的动作就是追,我们可以看到 这两个对象相互之间进行了消息传递,同样 我们的代码中 也充斥着 刚才的请求响应体,但是如果我们不这样设计呢?我们换一个思路:猫可以发出事件,同样猫可以响应事件,老鼠可以发出事件,老鼠可以响应事件,老鼠逃跑的原因不一定是猫发出了怒吼,而是因为老鼠订阅了猫的怒吼,换句话说,猫向天上怒吼一声,当然 猫怒吼的意图我们并不清楚,猫也不清楚,他仅仅是怒吼一声,这是他发出的事件,那么因为老鼠之前订阅了这个事件,那么老鼠会收到推送,于是老鼠采取自己的行为,就是跑,老鼠本身跑这个行为也是发出了一个事件,当然 老鼠没有向任何人发起请求,他仅仅是广播了一个事件,就是跑,因为很久以前 猫就订阅了老鼠跑的事件,于是猫在收到订阅后 就采取了行动,刚才我的描述中,我们会发现 每个对象都不关心其他对象,他们仅仅是响应事件,发出事件,但是我们的程序依然可以运行,而且用来描述业务逻辑之间的连线没有了,取而代之的是一个个完全的独立的互不依赖的对象,我们把其中这个对象从程序中拿出来 程序并不会崩溃,

这就是响应式编程。

而发出事件总是容易的,响应事件却不那麽简单,因为如何响应事件定义了这个对象区别于其他对象的特征,随着世界越来越复杂,人类总结出了很多规律,而这些规律就是对于一系列响应的出现顺序和强度的总结,比如,人类认为,鸡上树 狗跳墙,则地震来,所以 这里面 人类认为 只有上述两个事件同时发生,人类才会采取相应的行动,在程序里面 就是,一个对象可以订阅一个非常复杂的事件组合,只有这个非常复杂的事件组合发生了,那个对象才会采取动作,这本质上就是 如何更合的管理 事件监听,包括整个异步流的处理,这就是exjs做的事情。

原文地址:https://www.cnblogs.com/mrzhu/p/12443157.html

时间: 2024-10-28 21:27:00

rxjs学习(一)响应式编程理解的相关文章

RxJS入门之函数响应式编程

一.函数式编程 1.声明式(Declarativ) 和声明式相对应的编程?式叫做命令式编程(ImperativeProgramming),命令式编程也是最常见的?种编程?式. //命令式编程: function double(arr) { const results = [] for (let i = 0; i < arr.length; i++){ results.push(arr[i] * 2) } return results } function addOne(arr){ const r

[转]springboot2 webflux 响应式编程学习路径

原文链接 spring官方文档 springboot2 已经发布,其中最亮眼的非webflux响应式编程莫属了!响应式的weblfux可以支持高吞吐量,意味着使用相同的资源可以处理更加多的请求,毫无疑问将会成为未来技术的趋势,是必学的技术!很多人都看过相关的入门教程,但看完之后总觉得很迷糊,知其然不知道其所以然,包括我本人也有相同的疑惑.后面在研究和学习中发现,是我的学习路径不对,很多基本概念不熟悉,之前公司主打的jdk版本还是1.6/1.7,直接跳到运行在jdk8上的webflux,跨度太大,

函数响应式编程及ReactiveObjC学习笔记 (-)

最近无意间看到一个视频讲的ReactiveObjC, 觉得挺好用的 但听完后只是了解个大概. 在网上找了些文章, 有的写的比较易懂但看完还是没觉得自己能比较好的使用RAC, 有的甚至让我看不下去 这两天刚好公司项目交付闲下来, 想自己去啃下官方文档 ReactiveCocoa是一个基于函数响应式编程的OC框架. 那么什么是函数式响应式编程呢?概念我就不讲了 因为我讲的也不一定准确, 大家可以去baidu看看大神们的解释 下面我大概演示下响应式编程的样子 Masonry是比较常见的一个响应式框架,

响应式编程框架ReactiveCocoa学习——框架概览

这篇博客将会继续翻译RAC的官方文档Framework Overview. 主要是对RAC这和框架进行概览的介绍和学习.同时也可以参考我前面的两篇翻译<响应式编程框架ReactiveCocoa学习--基本操作符><响应式编程框架ReactiveCocoa介绍与入门>.其中ReactiveCocoa的Github官方地址为 https://github.com/ReactiveCocoa/ReactiveCocoa . 这篇文档包括了RAC中的对不同组件的高层描述,并解释如何进行结合

理解响应式编程

响应式的由来 我们先来聊一聊响应式的由来,对于它的由来,我们可能需要先从一段常见的代码片段看起 int a=1; int b=a+1; System.out.print("b="+b) // b=2 a=10; System.out.print("b="+b) // b=2 上面是一段很常见的代码,简单的赋值打印语句,但是这种代码有一个缺陷,那就是如果我们想表达的并不是一个赋值动作,而是b和a之间的关系,即无论a如何变化,b永远比a大1.那么可以想见,我们就需要花额

高大上函数响应式编程框架ReactiveCocoa学习笔记1 简介

原创文章,转载请声明出处哈. ReactiveCocoa函数响应式编程 一.简介 ReactiveCocoa(其简称为RAC)是函数响应式编程框架.RAC具有函数式编程和响应式编程的特性.它主要吸取了.Net的 Reactive Extensions的设计和实现. 函数式编程 (Functional Programming) 函数式编程也可以写N篇,它是完全不同于OO的编程模式,这里主要讲一下这个框架使用到的函数式思想. 1) 高阶函数:在函数式编程中,把函数当参数来回传递,而这个,说成术语,我

响应式编程(Reactive Programming)(Rx)介绍

很明显你是有兴趣学习这种被称作响应式编程的新技术才来看这篇文章的. 学习响应式编程是很困难的一个过程,特别是在缺乏优秀资料的前提下.刚开始学习时,我试过去找一些教程,并找到了为数不多的实用教程,但是它们都流于表面,从没有围绕响应式编程构建起一个完整的知识体系.库的文档往往也无法帮助你去了解它的函数.不信的话可以看一下这个: 通过合并元素的指针,将每一个可观察的元素序列放射到一个新的可观察的序列中,然后将多个可观察的序列中的一个转换成一个只从最近的可观察序列中产生值得可观察的序列. 天啊. 我看过

响应式编程,是明智的选择

相信你们在学习响应式编程这个新技术的时候都会充满了好奇,特别是它的一些变体,例如:Rx系列.Bacon.js.RAC等等…… 在缺乏优秀资料的前提下,响应式编程的学习过程将满是荆棘.起初,我试图寻找一些教程,却只找到少量的实践指南,而且它们讲的都非常浅显,从来没人接受围绕响应式编程建立一个完整知识体系的挑战.此外,官方文档通常也不能很好地帮助你理解某些函数,因为它们通常看起来很绕,不信请看这里: Rx.Observable.prototype.flatMapLatest(selector, [t

响应式编程介绍

响应式编程简介 (原文) 你应该对响应式编程这个新事件有点好奇吧,尤其是与之相关的部分框架:Rx.Bacon.js.RAC等等. 在缺乏好的资源的情况下,学习响应式编程成为痛苦.我开始学的时候,做死地找各种教程.结果发现有用的只是极少部分,而且这少部分也只是表面上的东西,对于整个体系结构的理解也起不了多大的作用.直接去看那些库文档同样也理解不了.比如下面这个: Rx.Observable.prototype.flatMapLatest(selector, [thisArg]) Projects