专业的JAVA编程教程与资源

网站首页 > java教程 正文

Reactive Programming 很简单

temp10 2024-12-03 18:32:39 java教程 16 ℃ 0 评论

反应式编程很简单

每个人都可能知道响应式编程,甚至有些人可能会在你的项目中使用。

反应式编程是一种处理异步数据流和特定变化传播的编程模型。

Reactive Programming 很简单

异步 | 数据流 | 传播变化。如果你从定义中理解了这些关键字,那么在项目中使用响应式编程将是轻而易举的事。

异步

当你同步执行某事时,你会等待它完成,然后再继续执行另一个任务。当你异步执行某事时,你可以在它完成之前继续执行另一个任务。

数据流

流是反应式编程的支柱。

随着时间的推移水流

每个人家里可能都有两条管道,一条是纯净水的,一条是咸地下水的,分别用于不同的用途。

假设在上午 9:00,你打开了电机,将纯水从地面提升到水箱,因此纯水流经管道并落入纯水箱。

在 15 分钟内,即早上 9 点 15 分,你已打开另一台电机,通过另一条管道将盐水从地面提升到盐水箱。

通常我们把从一个地方流到另一个地方的水称为溪流。回归到本文章中看数据流定义,那么它将是

数据(水)流是随时间变化的数据(水)序列

在反应式编程中,每个值序列(数据流)都被称为可观察的。这些值序列可以是来自网络服务的数据响应,或者每秒递增 1 的数字。

传播变化

将数据流中发生的变化传播到接收器。

再举一个例子,如果你想净化你的盐水,最好的方法是在水龙头出水之前安装净化器。这个净化器净化水并将变化传播到水龙头。

纯净水流向水龙头

数据流中的转换由 ReactiveX 中的Operators完成,这些转换后的数据被传递给订阅这些更改的观察者。

简单反应方程

反应水流 = 水流 + 净化器 + 传播到水龙头

反应式编程 = Observable + Operators + 传播给观察者

从数据流的创建到观察者收到响应的结束,在反应式编程中可以使用大量的运算符。这些运算符以下列模式工作。

流上的操作

是什么让反应式编程范式流行起来?

在谈论反应式编程时,不得不回顾命令式编程,命令式模型中缺乏自动反应性使得反应式编程模型更受欢迎。

命令式编程执行更改程序状态的语句,即调用更改变量值的函数/表达式。让我们进行一个简单的操作和赋值,a = b + c这意味着a将使用b + c表达式被计算或调用时的结果进行赋值。但是,如果 b和c的值被更改,那么a除非再次调用表达式,否则它不会对 的值产生影响。

让我们看一下通过将变量 和 更改为流来使用反应式编程的a相同b示例c。

反应加法

现在,如果我们将 1 推入 stream b和c,将自动调用加法运算,计算 2 的总和并将其推入 stream a。因此,如果稍后值发生b变化,我们只需将新值推送到流中b,然后这个新值b会自动与之前推送的值相加,c并将结果推送到流中a。

对于反应式编程,我们不调用表达式,而是定义流如何连接在一起并开始将值推送到流上。让管道和Operators处理其余的。

反应式扩展 (ReactiveX)

反应式扩展是一种 API,用于使用可观察对象、运算符、调度程序和观察者实现反应式编程,具有多种语言实现,包括 RxJs、RxJava、RxKotlin、RxPy 和 RxSwift。

  1. 事半功倍: 高效的API 的构建方式,这意味着在几行代码中使用简单的声明来编写更多功能非常容易。
  2. 轻松多线程:多线程让应用程序可以更好地利用设备 CPU 内的内核。在 ReactiveX 之前编写并发代码真的很痛苦。但是现在你只需要(以声明方式)声明你希望在其上执行任务的线程,而不是(以强制方式)创建和管理线程。
  3. 轻松的错误处理:如果你翻开编程历史的页面,对于任何异步调用,我们确实有处理成功响应的方法。但是为了处理意外的异常,我们必须用 try..catch 封装代码。如果你对所有错误场景使用 try..catch,你的代码看起来确实很混乱、不完整且难以处理。Rx 为你提供了一个复杂的错误处理机制,你可以使用它轻松地处理异常。
  4. 一堆强大的运算符: Rx api 为你提供了使你的编程生活变得轻松的运算符。

Rx 为你提供了一个工具箱,你可以使用它来实施解决方案。但是明智地使用工具箱就在我们手中。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表