反应式编程是现代网络应用的一个重要组成部分。然而,很少有流行的编程语言默认配备了反应式API(Angular)。RxJS允许你用JavaScript创建反应式程序,以更好地服务你的用户。RxJS是一个用于使用可观察序列创建异步程序的库。
今天,我们将探讨Angular中反应式编程和RxJS的概况。
什么是反应式编程?
今天,几乎每个在线应用程序都会产生大量的实时、交互式数据。应用程序被期望在整个应用中对事件做出改变,并在此过程中保持完整的功能。反应式范式是为了处理这些 "事件",实时更新整个程序。
反应式程序是围绕着事件而结构化的,而不是自上而下的顺序执行迭代代码。这使他们能够对触发事件作出反应,而不管程序何时处于什么阶段。
反应式编程通常与函数式编程和并发性相结合,以创建稳定、可扩展和事件驱动的程序。
反应式编程的优点
反应式编程的主要优点是,它允许程序保持对事件的响应,无论程序当前的任务是什么。
其他优点包括
- 高度的可扩展性
- 整洁和可读性
- 易于添加新的事件或响应支持
- 由于停机时间少,用户体验得到改善
- 有帮助的社区
反应式范式也可以与其他范式相结合,形成一种混合,如面向对象的反应式编程(OORP)或功能性反应式编程(FRP)。这种特质使反应式编程成为一种通用的范式,可以被改变以适应各种目的。
什么是RxJS?


反应式范式通过反应式扩展,或rxjs angular,可用于许多语言。这些库是可下载的API,增加了对观察者和反应式操作符等基本反应式工具的支持。通过反应式扩展,开发者可以将通常的迭代式语言,如JavaScript、Python、C++等,转换为反应式语言。
RxJS更具体地说是一种功能性的反应式编程工具,具有观察者模式和迭代器模式。它还包括一个适应形式的JavaScript的数组函数(reduce,map等),以处理异步事件的集合。
JavaScript的Rx-library被称为RxJS。RxJS已经变得非常流行,因为它简化了JavaScripts的异步实现。如果没有扩展,JavaScript的async就很难使用,而且发展不足。RxJS通过专门为反应式和异步编程建立的工具使异步更容易实现。
许多网络应用程序框架,如Angular ,都是基于RxJS结构。因此,你可能已经间接地使用了RxJS!
接下来,我们将分解RxJS的核心组件,并告诉你如何在自己的代码中实现它们。
RxJS可观察变量
观察者是我们程序中随着时间推移产生数据的部分。数据流可以是任何东西。它可以是类似于Youtube视频的视频流,也可以是类似于Spotify的音乐流。
然后,消费者可以订阅观察者来收听他们传输的所有数据。消费者可以同时订阅多个观测点。然后,这些数据可以在通过数据管道向用户移动时被转化。
一个Observable设置了一个观察者(我们将进一步了解),并将其连接到我们想要获取数值的 "东西 "上。这个 "东西 "被称为生产者,是一个值的来源--也许来自DOM中的click 或input 事件(甚至是更复杂的东西,如同步逻辑)。
理解可观察的更好的心理模型是消费者、发布者模式。只要订阅了发布者,消费者就可以异步地、持续地接收消息。订阅了Observable的消费者会一直接收数值,直到Observable完成或者消费者取消订阅Observable。
让我们看看如何创建我们的第一个可观察者。
import { Injectable } from ‘@angular/core’;
import {Observable} from ‘rxjs’;
@Injectable({
providedIn: ‘root’
})
export class ObservableService {
constructor() { }
public getNewObservable() {
return new Observable((observer) => observer.next(‘Hello My First Observable’);
}
}
RxJS观察者


观察者是一个具有next(),error(), 和complete() 方法的对象,当与观察者发生交互时就会被调用。他们是订阅观察者的对象。除此以外,我们还有一大堆angular中的rxjs操作符,可在此rxjs.dev/api/operato…
例子:考虑一场足球比赛。许多支持者正在观看比赛。我们把支持者按年龄分成两类,年轻和年长。当他们的球队进球时,支持者们根据他们的年龄和兴奋程度做出不同的反应。
- 比赛是主题 ,支持者是观察员。
- 所有的观察者都被附加/注册到主体上,当他们的足球队进球时,他们会得到通知 (触发事件是他们的球队进球)。
- 观察者根据收到的通知更新 他们的行为。
总结和下一步工作
今天我们已经了解了Angular中使用RxJS的反应式编程。为什么以及何时在Angular中选择RxJs。什么是Observable,观察者如何与订阅者互动。RxJS库可以帮助你以灵活有效的方式处理异步实现。