RxJS操作符(三)

一、过滤类操作符:debounce, debounceTime

跟时间相关的过滤

debounceTime自动完成:性能,避免每次请求都往出发

const length$ =Rx.Observable.fromEvent(length,'keyup').pluck('target','value').debounceTime(300);

debounce中间传入Observable

const length$ =Rx.Observable.fromEvent(length,'keyup').pluck('target','value').debounce(()=>{
Rx.Observable.interval(300)
});

时间可以是动态的,不是固定的300。

二、过滤类操作符distinct,distinctUntilChanged

distinct:只留不一样的【跟整个序列比】

整个序列中没有重复元素。

event是无尽序列,如果是对整个序列做监控,内存会越消耗越多。

const length$ =Rx.Observable.fromEvent(length,'keyup').pluck('target','value').distinct();

 distinctUntilChanged:只跟前一个元素比

 

const length$ =Rx.Observable.fromEvent(length,'keyup').pluck('target','value').distinctUntilChanged();

 三、合并类操作符merge, concat, startWith

 concat:

等待第一个发射完,再输出第二个流

 

startWith:类似初始值默认值。

四、合并类操作符:combineLatest, withLatestFrom, zip 

区别:zip有对齐的特性,withLatestFrom是以源事件流为基准

combineLatest:组成它的任何流中有新元素出现。

withLatestFrom:有一个主流,主流产生数据去取另一个流的最新值。

本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:https://www.cnblogs.com/starof/p/9171292.html 有问题欢迎与我讨论,共同进步。

猜你喜欢

转载自www.cnblogs.com/starof/p/9171292.html