Skip to content
字数
810 字
阅读时间
4 分钟

title: RxJS
link: https://cn.rx.js.org/manual/overview.html
tags: ["todo"]
date: 2022-10-09 17:32:13
modify: 2022-10-09 17:34:32


背景

RxJS 是一个库,它通过使用 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 (调度器): 用来控制并发并且是中央集权的调度员,允许我们在发生计算时进行协调,例如 setTimeout 或 requestAnimationFrame 或其他。

和 vuex 区别

具体来说,RxJS 提供了一些类似于数组操作的操作符,例如 map、filter、reduce 等等,同时还提供了一些专门用于处理异步数据流的操作符,例如 delay、throttleTime、debounceTime 等等。开发者可以使用这些操作符来对异步数据流进行操作,从而实现更加优雅和可维护的异步编程逻辑。

与 RxJS 不同,Vuex 是一个专门为 Vue.js 应用程序开发的状态管理库。它主要的作用是将组件之间共享的状态(例如用户信息、购物车信息等等)保存在一个全局的 Store 对象中,并提供了一些方法来修改和获取这些状态,从而实现更加简洁和可维护的代码。

虽然 RxJS 和 Vuex 都可以用于处理异步数据流,但是它们的设计思想和使用场景有很大的不同

使用场景

  • RxJS 更加适合处理复杂的异步编程逻辑,例如用户输入、网络请求等等
  • Vuex 更加适合处理简单的状态管理问题,例如用户登录状态、购物车信息等等

学习成本

  • 此外,RxJS 更加灵活和可扩展,但是学习成本也更高,而 Vuex 则更加简单和易用,但是可扩展性有限

参考

概览 | RxJS 中文文档

RxJS实践,Vue如何集成RxJS - 掘金

贡献者

The avatar of contributor named as jiechen jiechen

页面历史

撰写