Rx.js

2020-11-06  本文已影响0人  鱼香肉丝没有渔

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

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

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

css动画(transition)

Rx.js核心

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各种方法

上一篇下一篇

猜你喜欢

热点阅读