Rx.js

作者: 鱼香肉丝没有渔 | 来源:发表于2020-11-06 11:00 被阅读0次

Rx.js官网: 可以用来处理非同步或事件的Javascript函式库

非同步:Ajax/XHRL(XMLHttpRequest) seTimeout/setInterval Promise

事件: 各种Dom事件(click,keyup,mousemove,...)

css动画(transition)

Rx.js核心

  • observable:可观察的事件:代表一组未来即将产生的事件(被观察的事件)

  • observer: 用来接收观察结果的一个事件一般是(function(){})有3个属性(next,error,complete)

  • subscription:订阅 代表正在执行observer/observable的执行个体(用来取消订阅)

  • operators: 用来处理事件的集合,常见包含(map,filter,concat...)

  • subject: 主体物件 用来广播收到事件给多个observer,(一对多)

  • schedulers: 控制器 用来集中管理调度多重事件之间的事件,控制事件并发的情况

code.png

取消订阅

 var sub = rxjs.interval(500)

      .pipe(rxjs.operators.take(4))
      
      .subscribe(console.log) 
 sub.unsubscribe() //取消订阅

es2015写法
解构赋值

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

interval(100)
   .pipe(take(5))
      
   .subscribe(console.log) 

ESM(ES Module)写法

···
import { interval } from 'rxjs';
import { take } from 'rxjs/operators'
interval(100)
.pipe(take(5))

.subscribe(console.log)
···
处理事件


      // 1.建立可观察的observable事件
       var clicks$  = rxjs.fromEvent(document,'click');
      //  2.建立观察者事件(observer)
       var observer = {next:(x) => console.log(x)};
      //  3.建立订阅事件(订阅observable事件,并传入observer观察者事件)
       var sub$ = click$.subscribe(observer);
       4.取消订阅subscription事件
       sub$.unsubscribe()
  //-------------------------简化版
       1.var clicks$  = rxjs.fromEvent(document,'click');

       3.var sub$ = clicks$.subscribe(x=>console.log(x));

       4.sub$.unsubscribe()

过滤事件

     // 1.建立可观察的observable事件
       var clicks$  = rxjs.fromEvent(document,'click');
     //  2.引入filter
       const {filter} rxjs.operators;
     // 3.建立订阅事件(订阅observable事件,并自动建立观察者事件)
       var sub$ = click$.subscribe((x)=>console.log(x));
     //  4.取消订阅subscription事件
       sub$.unsubscribe()

可视化工具 i 可视化工具 ii理解Rx.js各种方法

相关文章

  • Rx.js

    Rx.js[https://rxjs.dev/]官网: 可以用来处理非同步或事件的Javascript函式库 非同...

  • Rx.js 入门

    基本概念 1、RxJS 是基于观察者模式和迭代器模式以函数式编程思维来实现的。RxJS 中含有两个基本概念:Obs...

  • Rx.js学习所得

    前言 学习Rx.js也差不多3个来月了(准确来讲,应该是第一次学习失败,隔了一个月第二次总算是有点理解它的思想了)...

  • Rx.js 入门笔记

    基本概念 Observable 可观察者, 生产数据 Observer 观察者, 消费数据 Subscriptio...

  • 2019-05-18 Rx.js

    通过「换一种思路」来解决「异步」问题Rx.js比async还要好 我们的所有网页应用都是异步的:脚本加载播放器数据...

  • Rx.js实现拖拽效果

    周五用裸react写了波一个选择物品弹框拖拽的需求,不是很爽,所以周末用Rx又撸了一个,下面是功能完备的demo:...

  • Observable【Rx.js源码分析】

    几个月前读完了Rx.js的源码(v6)版本,领悟到了Stream模式的实现原理,并将其思想广泛应用在业务代码中。这...

  • Rx.js学习笔记(一)——创建数据流

    前言 这些笔记大部分都是阅读《深入浅出RxJS》一书的笔记。这是我第二次看了,第一次知识粗略的翻过,回想起来没有什...

  • Nest - Rx.js在http请求中的应用

    title: Nest中的Http请求 Nest 底层使用的 Http 模块为 axios,又使用了 rxjs[h...

网友评论

      本文标题:Rx.js

      本文链接:https://www.haomeiwen.com/subject/vzozvktx.html