我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Node.js中怎么应用反应式编程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Node.js中怎么应用反应式编程

本篇内容主要讲解“Node.js中怎么应用反应式编程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js中怎么应用反应式编程”吧!

Node.js中怎么应用反应式编程

反应式编程提供了先进的数据流,能够以一种可预测的方式创建和操作事件流。

什么是反应式编程?

简而言之,当输入的变化导致输出的相应变化,而不需要手动更新输出的变化时,就可以说一个程序是反应式的。这使得软件工程师可以绕过手动处理巨大实现的压力。

功能性的反应式编程范式使我们的反应式代码库很容易被阅读和理解,因为它减少了回调地狱,这使得异步的代码块难以阅读。

由于反应式编程与异步操作有很大关系,函数式方法使我们更容易确定异步操作的结果。

反应式编程的基本原理

操作符

操作符是Observables严重依赖的方法。它们有以下使用情况。

  • 在处理异步请求时,将异步事件转换为Observables

  • 将多个可观察变量的序列组合成一个单一的可观察变量

  • 错误处理

  • 处理基于时间的操作

可观察操作符包括[filter(...)](https://rxjs.dev/api/operators/filter),[mergeMap(...)](https://rxjs.dev/api/operators/mergeMap),[of](https://rxjs.dev/api/index/function/of),[from](https://rxjs.dev/api/index/function/from),[concat](https://rxjs.dev/api/index/function/concat) 方法,等等。

可观察流

一个Observable流是一个由多个输入值组成的数组,它随着时间的推移被处理。一个Observable流向它的订阅者发出事件,而订阅者又听从这些事件进行进一步处理。可观察的流可以被组合来创建新的流。数组方法,如map,reduce,filter ,等等,都是用来操作流的。

值可以按以下方式发射给订阅者。

import { of, Observable } from "rxjs"; 
const emitter : Observable<string> = of("Sam", "Ray", "Thomas");

订阅者

Observable订阅器更像是数组迭代器。它们在产生的Observable流中循环,使之有可能转换或处理每个流。

下面的片段展示了如何订阅一个Observable流。

emitter.subscribe((value: string) => {
  console.log(`Name: ${value}`)
})

反应式编程有一些内置的订阅方法,如emitflatMap map方法,这些方法允许我们监听Observable流的每个值,并根据我们的需要对它们进行处理。

反应式系统的标准

一个完全反应式的Node.js系统应该满足以下标准。

响应式架构

一个反应式系统应该拥有良好的用户体验,对用户的互动提供及时的响应。

弹性架构

弹性架构,如果正确实施,将允许系统响应错误而不破坏整个系统。

这种架构确保每个节点都有一个复制品。如果主节点发生故障,在其他可用的节点上会有某种回退。

可扩展性

系统应该能够处理不同的负载,这与它的能力有关,当基础设施需要很少或没有资源时,它可以缩小规模,而当基础设施需要更多资源时,它可以扩大规模,以便提供一个有效的成本管理策略。

此外,该系统也应该能够处理时间点的负载。

为什么要考虑Node.js的反应式编程?

现在我们已经简要地讨论了反应式编程的基本原理,了解考虑用Node.js进行编程的反应式方法的原因也很重要。

可扩展性

编写功能性的反应式代码可以更容易地管理代码库,提高项目的可扩展性。

功能实现

对于需要定期修改功能或增加新功能的项目来说,编写功能性反应式代码使得新功能更容易被添加到现有项目中。

与时间相关的错综复杂的问题

在对外部API进行异步请求时,我们确实会遇到一些时间限制的约束。这些限制可以用反应式编程方法有效地处理。

减少代码的冗长性

实施反应式编程范式将极大地减少实现特定功能所需的代码量。

引入协调和它的好处/权衡

在反应式编程诞生之前,用Node.js构建微服务需要协调所有服务互动的协调器模式。

协调器模式的一个典型用例是在电子商务应用中拥有微服务,这些微服务按顺序处理以下任务:从购物车中获取客户订单,计算总金额,生成账单,在成功付款后,更新产品库存并创建一个订单ID,并向卖家提供Pending

虽然这提供了一个系统的方法来处理应用程序的逻辑流程,但依赖关系紧密耦合的一个主要缺点会破坏整个系统。例如,如果前面的服务出现故障,那么所有的依赖服务都不会被执行。

在Node.js中何时使用反应式编程方法

反应式编程不是一个万能的方法,但它在一些特定的情况下是非常合适的。

  • 当需要将应用流分散到可管理的微服务中时,反应式编程模式是非常合适的。

  • 当需要在有限的时间内将应用交付给生产时

  • 当前面的一个依赖性的临时关闭会导致整个系统的崩溃时

  • 当有很多异步的代码块,而等待的结果可能被延迟时,反应式编程也是非常合适的。

Node.js中的反应式编程的弊端

虽然功能化的反应式编程方法减少了协调器模式遇到的缺点,但它不能取代协调器模式,因为它有自己的缺点。

  • 分解应用流程并分布在所有服务中所产生的冗余代码块

  • 为了构建反应式服务,需要对流和事件循环有一个全面的了解

Node.js中流行的反应式编程库

RxJS

这是JavaScript中最流行的反应式编程库之一,被积极维护。

在写这篇文章的时候,RxJS正在从v7过渡到v8,它在上周有超过2700万次的下载。这次过渡的特点是重写了库的性能,更好的模块化,更好的可调试的调用堆栈,以及向后的兼容性。

下面是一个快速的RxJS使用例子。

import { range } from "rxjs";
import { map, filter } from "rxjs/operators";

range(1, 200)
  .pipe(
    filter(result => result % 2 === 1),
    map(result => result * 2 )
  )
  .subscribe(result => console.log(result));

Reactor.js

Reactor.js是另一个用于反应式编程的JavaScript库。虽然与Bacon.js和Rxjs相比,它还不是很流行,但它以轻量而闻名。使用Reactor.js在复杂的数据模型中保持一致性要容易得多,因为它能自动跟踪反应式变量,并在任何反应式变量的值发生变化时重新触发观察者。
使用Reactor.js,不需要手动设置订阅/监听器,因为依赖关系会自动为你设置。

下面是一个Reactor.js使用的快速例子。

const reactor = new Reactor({ name: "Doe" });

observe(() => {
  console.log("My name is ", reactor.name);
}); // prints "My name is Doe"

reactor.name = "John "; // prints "My name is John"

Reactor是基于与Bacon.js和Knockout.js相同的反应式原理。

其他用于反应式编程的JavaScript库包括。

  • Flyd

  • Bacon.js

  • Knockout.js

  • Kefir

  • 大多数

到此,相信大家对“Node.js中怎么应用反应式编程”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Node.js中怎么应用反应式编程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Reactive反应式编程是什么及如何使用

这篇文章主要介绍了Reactive反应式编程是什么及如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Reactive反应式编程是什么及如何使用文章都会有所收获,下面我们一起来看看吧。反应式编程简介Reac
2023-06-29

JavaScript中的函数式编程怎么应用

本文小编为大家详细介绍“JavaScript中的函数式编程怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript中的函数式编程怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。JavaS
2023-06-27

Docker中怎么编写dockerfile启动node.js应用

本文小编为大家详细介绍“Docker中怎么编写dockerfile启动node.js应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Docker中怎么编写dockerfile启动node.js应用”文章能帮助大家解决疑惑,下面跟着小编的
2022-12-02

Java函数式编程怎么应用

今天小编给大家分享一下Java函数式编程怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Java 根据常用需求场景的用
2023-07-04

Docker怎么编写dockerfile启动node.js应用

这篇文章主要讲解了“Docker怎么编写dockerfile启动node.js应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Docker怎么编写dockerfile启动node.js应用
2023-06-17

怎么用Node.js编写内存效率高的应用程序

这篇文章主要介绍怎么用Node.js编写内存效率高的应用程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!问题:大文件复制如果有人被要求用 NodeJS 写一段文件复制的程序,那么他会迅速写出下面这段代码:const
2023-06-14

Spring中的AOP编程怎么应用

本文小编为大家详细介绍“Spring中的AOP编程怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring中的AOP编程怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。AOP 概述AOP 为 A
2023-07-05

Java响应式编程之handle怎么使用

这篇文章主要介绍“Java响应式编程之handle怎么使用”,在日常操作中,相信很多人在Java响应式编程之handle怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java响应式编程之handle怎
2023-07-04

Python中的元编程怎么应用

这篇“Python中的元编程怎么应用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python中的元编程怎么应用”文章吧。什
2023-07-05

如何解析反应式编程 RxJava 设计原理

这篇文章给大家介绍如何解析反应式编程 RxJava 设计原理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、ReactiveX 与 RxJavaReactiveX 的全称为Reactive Extension,一般缩
2023-06-03

win10双击应用程序没有反应怎么解决

如果在Windows 10上双击应用程序没有任何反应,可以尝试以下解决方法:1. 重新启动计算机:有时候只需简单地重新启动计算机就能解决此问题。2. 检查任务管理器:按下“Ctrl + Shift + Esc”组合键打开任务管理器,查看是否
2023-09-15

Spring WebFlux反应式编程设计及工作原理是什么

这篇文章主要介绍“Spring WebFlux反应式编程设计及工作原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring WebFlux反应式编程设计及工作原理是什么”文章能帮助大家解
2023-06-29

C# interface编程怎么应用

这篇文章主要介绍“C# interface编程怎么应用”,在日常操作中,相信很多人在C# interface编程怎么应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# interface编程怎么应用”的疑
2023-06-17

详解Java编程中的反射在Android开发中的应用

反射定义 “反射”(Reflection)能够让运行于JVM中的程序检测和修改运行时的行为。 为何需要反射 反射带来的好处包括: 在运行时检测对象的类型。 动态构造某个类的对象。 检测类的属性和方法。 任意调用对象的
2022-06-06

编程热搜

目录