Rxjs简介

定义
  1. 一组可用来处理非非同步事件JavaScript函数库。

  2. 非同步

    • AJAX 、XHR(XMLHttpRequest)、fetch API
    • Service WorkerNode Stream
    • setTimeout、setInterval
    • Promise
  3. 事件

    • 各式DOM事件(click、dbclick、keyup等)
    • CSS动画事件
    • HTML5、Geolocation、WebSockets、Server Send Event
核心概念
  1. Observable:可观察的物件。代表一组未来即将产生的事件资料(被观察的物件)。

  2. Observer:观察者物件。代表一个用来接收观察结果的物件(收到的就是事件资料)。观察者物件就是一个物件包含3个含有回呼函式的属性(next、err、complete)。

  3. Subscription:订阅物件。代表正在执行Observable/Observer的执行个体。(可用来取消订阅)

  4. Operators:运算子。必须拥有函数编程中所定义的纯函数(pure function)特性(没有副作用的函数)。主要用来处理一系列的事件资料集合。常见的运算子包含map、filter、concat、flatMap、switchMap等。

  5. Subject:主体物件。如同EventEmitter一样,主要用来广播收到的事件资料给多位Observer(观察者)。

  6. Schedulers:排程控制器。用来集中管理与调度多重事件之间的资料,以控制事件并发情况(control concurrency)。

官网

https://rxjs.dev/

const { interval} =rxjs;
const {take} = rxjs.operators;

interval(500)
  .pipe(take(4))
  .subscribe(console.log);
var subs=rxjs.interval(500).pipe(rxjs.operators.take(40)).subscribe(console.log);
subs.unsubscribe();
import {interval} from 'rxjs';
import { take } from 'rxjs/operators';

interval(500)
  .pipe(take(4))
  .subscribe(console.log);

RxJS的运作方式

建立可观察的Observal物件。

var clicks$ = rxjs.fromEvent(document,'click');

套用filter运算子

const { filter } =rxjs.operators;
clicks$= clicks$.pipe(filter(x=>x.clientX<100));

建立观察者物件(Observer)。

var observer = {next :(x)=>console.log(x)};

建立订阅事件(订阅Observable物件,并传入Observer观察者物件)。

var subs$ = clicks$.subscribe(observer);

取消订阅Subscription物件

subs$.unsubscribe();

第二三步简化写法

var subs$ =clicks$.subscribe( x=>console.log(x) );
主体物件Subject的用法
// 建立主体物件(之后要靠这个主体物件进行传播)
var subject = new rxjs.Subject();
//建立可观察的Observable物件
var  clicks$ = rxjs.fromEvent(document,'click');
// 设定最多取得两个事件资料就将Observable物件为完成
clicks$=clicks$.pipe(take(2));
//设定将ckicks$全部交由subject主体物件进行广播
clicks$.subscribe(subject);
// 最后再由subject建立Observer观察者物件
var subs1$ =subject.subscribe((x)=>console.log(x.clientX));
var subs2$ =subject.subscribe((x)=>console.log(x.clientX));
//取消订阅
subs1$.unsubscribe();
subs2$.unsubscribe();
分类
  1. 建立运算子:建立observable(from / fromEvent / fromEventPattern / interval / of / range / throwError / timer
  2. 组合建立运算子:将多个observable组合在一起(combineLatest / concat / forkJoin / merge
  3. 转换运算子:将observable传入的资料转换成另一种格式(concatMap / concatMapTo / map / mapTo / mergeMap / mergeMapTo / switchMap / switchMapTo / pluck
  4. 过滤运算子:将observable传入的资料进行过滤(debounce / debounceTime / distinct / filter / first /last /skip / take / throttle / throttleTime
  5. 组合运算子:组合多个observable(combineAll / concatAll / mergeAll / startWith)
  6. 多播运算子:将observable广播给多位观察者(publish / publishReplay / share
  7. 错误处理运算子:处理observable观察过程中出现的例外错误。(catchError / retry / retryWhen
  8. 工具函式运算子:提供observable执行过程中的工具函式(tap / delay / materialize / timeout / timeoutWith / toArray
  9. 条件式与布林运算子:计算特定条件并回传布林值的运算子。(defaultfEmpty / every / find / findIndex/ isEmpty
  10. 数学运算子:将observable传来的资料进行数学运算。(count / max / min / reduce
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值