每个人都可能知道响应式编程,甚至有些人可能会在你的项目中使用。
反应式编程是一种处理异步数据流和特定变化传播的编程模型。
异步 | 数据流 | 传播变化。如果你从定义中理解了这些关键字,那么在项目中使用响应式编程将是轻而易举的事。
当你同步执行某事时,你会等待它完成,然后再继续执行另一个任务。当你异步执行某事时,你可以在它完成之前继续执行另一个任务。
流是反应式编程的支柱。
随着时间的推移水流
每个人家里可能都有两条管道,一条是纯净水的,一条是咸地下水的,分别用于不同的用途。
假设在上午 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处理其余的。
反应式扩展是一种 API,用于使用可观察对象、运算符、调度程序和观察者实现反应式编程,具有多种语言实现,包括 RxJs、RxJava、RxKotlin、RxPy 和 RxSwift。
Rx 为你提供了一个工具箱,你可以使用它来实施解决方案。但是明智地使用工具箱就在我们手中。
| 留言与评论(共有 0 条评论) “” |