4. Rxjs 介绍及注意事项

简介: 先梳理一些概念:Rx:ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、JavaScript和C++,Rx近几年越来越流行了,现在已经支持几乎全部的流行编程语言了,Rx的大部分语言库由ReactiveX这个组织负责维护,比较流行的有RxJava/RxJS/Rx.NET,社区网站是 reactivex.io。

先梳理一些概念:
Rx:ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、JavaScript和C++,Rx近几年越来越流行了,现在已经支持几乎全部的流行编程语言了,Rx的大部分语言库由ReactiveX这个组织负责维护,比较流行的有RxJava/RxJS/Rx.NET,社区网站是 reactivex.io

Observer 和 Observable: 在ReactiveX中,一个观察者(Observer)订阅一个可观察对象(Observable)。观察者对Observable发射的数据或数据序列作出响应。这种模式可以极大地简化并发操作,因为它创建了一个处于待命状态的观察者哨兵,在未来某个时刻响应Observable的通知,不需要阻塞等待Observable发射数据。

Rxjs: 刚才说了Rx是抽象的东西,rxjs就是使用JavaScript语言实现rx接口的类库。
它通过使用 observable 序列来编写异步和基于事件的程序。它提供了一个核心类型 Observable,附属类型 (Observer、 Schedulers、 Subjects) 和受 [Array#extras] 启发的操作符 (map、filter、reduce、every, 等等),这些数组操作符可以把异步事件作为集合来处理。

可以把 RxJS 当做是用来处理事件的 Lodash

ReactiveX 结合了 观察者模式迭代器模式使用集合的函数式编程,以满足以一种理想方式来管理事件序列所需要的一切。

在 RxJS 中用来解决异步事件管理的的基本概念是:

  • Observable (可观察对象): 表示一个概念,这个概念是一个可调用的未来值或事件的集合。
  • Observer (观察者): 一个回调函数的集合,它知道如何去监听由 Observable 提供的值。
  • Subscription (订阅): 表示 Observable 的执行,主要用于取消 Observable 的执行。
  • Operators (操作符): 采用函数式编程风格的纯函数 (pure function),使用像 mapfilterconcatflatMap 等这样的操作符来处理集合。
  • Subject (主体): 相当于 EventEmitter,并且是将值或事件多路推送给多个 Observer 的唯一方式。
  • Schedulers (调度器): 用来控制并发并且是中央集权的调度员,允许我们在发生计算时进行协调,例如 setTimeoutrequestAnimationFrame 或其他。

注意:网上很多例子都是基于rxjs5版本,而最新的rxjs6变化很大,具体参见中文,后面的例子我都会基于rxjs6。

建议直接看官方文档,毕竟是最新的。

学好rxjs的关键是对Operators (操作符)的灵活使用,操作符就是纯函数,我们使用操作符创建,转换,过滤,组合,错误处理,辅助操作Observables。具体参见

下节介绍如何创建 Observables

相关文章
|
C++
基于Qt的简易聊天室设计与实现
基于Qt的简易聊天室设计与实现
1160 1
|
Java Docker 容器
|
数据采集 JavaScript 测试技术
史上最全测试开发工具推荐(含自动化、APP性能、稳定性、抓包神器)
在本篇文章中,将给大家推荐14款日常工作中经常用到的测试开发工具神器,涵盖了自动化测试、APP性能测试、稳定性测试、抓包工具等。
6238 0
史上最全测试开发工具推荐(含自动化、APP性能、稳定性、抓包神器)
|
8月前
|
人工智能 JavaScript 开发工具
Yank Note: 一款强大可扩展的本地 Markdown 笔记应用
Yank Note 是一款本地化、高性能、高扩展性、双栏式的开源 Markdown 笔记应用。你可以用它轻松地记录学习笔记、撰写文章、管理待办事项、运行代码片段、制作小工具等。
1535 7
Yank Note: 一款强大可扩展的本地 Markdown 笔记应用
|
10月前
|
JSON 运维 网络协议
iperf3网络性能测试
iperf3 是一款网络性能测试工具,支持 TCP/UDP 协议,可测量带宽、延迟、丢包等指标。基于客户端-服务器模型,适用于网络调试与性能评估,提供丰富参数及 JSON 输出,便于自动化分析。
1241 1
iperf3网络性能测试
|
11月前
|
JavaScript 搜索推荐 Java
基于SpringBoot的社区老年食堂系统
针对老龄化社会饮食难题,智慧社区老年食堂系统应运而生。融合Spring Boot、Vue、Java与MySQL技术,实现餐饮服务智能化、个性化,提升老年人生活质量与幸福感,推动社区养老服务升级。
|
机器学习/深度学习 人工智能 自然语言处理
《Python+AI如何颠覆传统文书审查模式》
在法律领域,法律文书审查传统上依赖人工,耗时且易出错。Python结合AI技术为这一问题提供了高效解决方案。通过自然语言处理(NLP),计算机可精准分析法律文书,包括分词、句法分析、命名实体识别(NER)和文本分类等步骤。这些技术能快速提取关键信息,理解复杂语义,并结合深度学习模型如Transformer提升准确性。实际应用中,高质量数据与专业标注至关重要,同时借助TensorFlow或PyTorch优化模型训练。AI辅助审查不仅提高效率,还助力律师、法官和企业法务更好地应对挑战,推动司法公正与智能化发展。
516 1
|
11月前
|
存储 搜索推荐 算法
2026版基于android的智慧旅游系统
随着旅游市场快速发展,游客对个性化、智能化服务需求日益提升。本文基于Android平台,结合Java、MySQL与协同过滤推荐算法,设计并实现一款智能旅游管家系统,旨在解决传统旅游服务中信息分散、规划繁琐、服务同质化等问题,提升用户出行体验。
|
11月前
|
机器学习/深度学习 人工智能 搜索推荐
拔俗AI学伴智能体系统:基于大模型与智能体架构的下一代个性化学习引擎
AI学伴智能体系统融合大模型、多模态理解与自主决策,打造具备思考能力的个性化学习伙伴。通过动态推理、长期记忆、任务规划与教学逻辑优化,实现千人千面的自适应教育,助力因材施教落地,推动教育公平与效率双提升。(238字)
1269 0

热门文章

最新文章