前端学习笔记-RxJS与Redux-Observable (一)

本文介绍了RxJS的基本概念,如Observables、Observers、Subjects和Operators,并探讨了Redux-Observable这一基于RxJS的Redux中间件。通过Epic的概念,展示了如何处理异步请求并创建新的actions。同时,文章对比了RxJS与Promise的差异,以及RxJS与Redux在状态管理上的不同之处。
摘要由CSDN通过智能技术生成


承接前文提到的异步Action话题,中间件redux-thunk易于编写和理解,但它也存在实践上的不足:

  1. 你最终可能会回调地狱,特别是在发出API请求时,
  2. 需要使用业务逻辑填充回调函数 或reducer函数去整理数据(数据格式不总是完美的,特别是使用第三方API时)
  3. 不利于测试(必须使用Spy方法来检查是否使用正确的对象进行dispatch)

然后现存的异步状态管理方案也有很多Saga什么的,所以……没什么所以,反正就是要讲Redux-Observable!然而又不得不先从RxJS开始:

RxJS

RxJS 是观察者模式的一个实现。它允许我们以声明方式组合 “Observables” 和 “Subjects” 的运算符来扩展观察者模式。

它被用于流式事件处理,能够更方便地梳理和管控异步逻辑。

它的核心概念,在本文中涉及Observables、Observers、Operators 和 Subjects 4个;

Observables 可观察对象; Observers 观察者; Operators 操作符; Subjects 主体(多播的Observable)

可观察对象Observable

可观察对象Observable 是可以在一段时间内 发出数据/产生事件 的对象。我们可以通过new来创建可观察对象(也可以使用一些 Operators 来创建),new时需要传一个 入参被称为subscriber的函数 来定义 “如何产生事件”。
Observable 在创建时,通过传入一个"事件编排函数"来定义如何产生事件
Observable 可使用 subscriber 的.next方法 将数据推送给观察者。
如果 Observable 成功完成,它可以使用该.complete方法通知观察者。
如果 Observable 遇到错误,它可以使用该.error方法将错误推送给观察者。

观察者可以按需多次调用.next,并在最后调用.complete 或.error。在 complete 或 error 之后,Observable 对象就不会向流中推送任何值了。

观察者Observers

其实前文也可以看出,Observable 的观察者(Observer)是具有三个函数的对象:next, error 和 complete,这些函数是可选的,它们也可以分别作为三个参数传给 Observable 对象身上的 subscribe 函数,让观察者对该 Observable 对象进行订阅。
理解为用一个"回调映射对象"Observer,来定义三种事件的回调
Observer 定义了"如何响应事件",而Observable 定义了"如何产生事件";
用回调响应事件,用产生事件

.subscribe
推送数据
Observer
观察者
Observable
可观察对象
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值