如何理解RXjs

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

RxJS 是使用 Observables 的响应式编程的库,它使编写异步或基于回调的代码更容易。

2.知识剖析

什么是RxJS,如何理解有什么作用?
Observable,Observer,Subscription,Operators ,subject,Schedulers是什么

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


它将一切数据,包括HTTP请求,DOM事件或者普通数据等包装成流的形式,然后用强大丰富的操作符对流进行处理,使你能以同步编程的方式处理异步数据,并组合不同的操作符来轻松优雅的实现你所需要的功能

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

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

3.常见问题

如何理解RXjs的流

4.解决方案

什么是流?这里我们不用专业术语来解释,用生活中大家熟悉的的例子来类比,比如“河流”。


有流向:


RxJS中数据的流向也是固定的,就是从发送者到订阅者。基本都如下面这种形式:

            from(Promise.resolve(1)) // 流的源头
            ......
            .subscribe(x => console.log(x)); // 流的终点</p>

有分支:


大的河流一般有干流和支流,大大小小的支流汇入干流。 RxJS中的数据则可以通过操作符将数据流进行聚合或拆分:

// 流的聚合 mergeMap(from(Promise.resolve(1)), from(Promise.resolve(2))) ...... .subscribe(x => console.log(x))
            // 流的拆分
            const obs$ = from(Promise.resolve(1)
            obs$.subscribe(x => console.log(x))
            obs$.subscribe(x => {
            // do sth
            })/
        </code>

5.编码实战

6.扩展思考

什么是lodash

Lodash 是一个具有一致接口、模块化、高性能等特性的 JavaScript 工具库

7.参考文献

https://cn.rx.js.org/manual/overview.html#-

8 更多讨论

1.什么是Observer?

答: Observer(观察者)是Observable(可观察对象)推送数据的消费者。在RxJS中,Observer是一个由回调函数组成的对象,键名分别为next、error 和 complete,以此接受Observable推送的不同类型的通知

2.什么是Subscription?

Subscription是一个代表可以终止资源的对象,表示一个Observable的执行过程。Subscription有一个重要的方法:unsubscribe。这个方法不需要传入参数,调用后便会终止相应的资源。在RxJS以前的版本中,

3.Subject?

Subject是一种能够发射数据给多个observer的Observable, 这让Subject看起来就好像是EventEmitter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值