Open Christian-Yang opened 7 years ago
对时间轴的操纵
RxJS一个很强大的特点是,它以流的方式来对待数据,因此,可以用一些操作符对整个流上所有的数据进行延时、取样、调整密集度等等。
const timeA$ = Observable.interval(1000) const timeB$ = timeA$.filter(num => { return (num % 2 != 0) && (num % 3 != 0) && (num % 5 != 0) && (num % 7 != 0) }) const timeC$ = timeB$.debounceTime(3000) const timeD$ = timeC$.delay(2000)
示例代码中,我们创建了四个流:
A是由定时器产生的,每秒一个值 B从A里面过滤掉了一些 C在B的基础上,对每两个间距在3秒之内的值进行了处理,只留下后一个值 D把C的结果整体向后平移了2秒 所以结果大致如下: 注意C的产生,上面的解释说的是i对每两个间距在3秒之内的值进行处理,三秒之内就是2秒,也就是说间隔是两秒的值,只是保留最后一个。 所以看上面的图,从1开始,两秒距离没有值,那么于是就把1放在3的位置上。然后继续向前走,走到11的位置,然后经过两秒钟到了13,所以13取代了11,然后13向后继续走了2妙,发现没有新值出现,所以13的值放在了15的位置上。然后继续向前走17出现了,17出现之后间隔2妙19出现了,所以19取代了17,并最终放在了21的位置上。
distinctUntilChanged函数:
去除连续重复的值:
// 去除连续重复的元素,输出A,B,A,B,A Rx.Observable.of('A', 'B', 'B', 'A', 'B', 'A', 'A') .distinctUntilChanged( ) .subscribe( x => console.log( x ))
参考资料: rxjs5.X系列 —— filter系列 api 笔记:http://www.cnblogs.com/BestMePeng/p/rxjs_learn_filter.html RxJS 入门指引和初步应用:http://web.jobbole.com/90548/ 构建流式应用—RxJS详解:https://github.com/joeyguo/blog/issues/11?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
对时间轴的操纵
RxJS一个很强大的特点是,它以流的方式来对待数据,因此,可以用一些操作符对整个流上所有的数据进行延时、取样、调整密集度等等。
示例代码中,我们创建了四个流:
A是由定时器产生的,每秒一个值 B从A里面过滤掉了一些 C在B的基础上,对每两个间距在3秒之内的值进行了处理,只留下后一个值 D把C的结果整体向后平移了2秒 所以结果大致如下: 注意C的产生,上面的解释说的是i对每两个间距在3秒之内的值进行处理,三秒之内就是2秒,也就是说间隔是两秒的值,只是保留最后一个。 所以看上面的图,从1开始,两秒距离没有值,那么于是就把1放在3的位置上。然后继续向前走,走到11的位置,然后经过两秒钟到了13,所以13取代了11,然后13向后继续走了2妙,发现没有新值出现,所以13的值放在了15的位置上。然后继续向前走17出现了,17出现之后间隔2妙19出现了,所以19取代了17,并最终放在了21的位置上。
distinctUntilChanged函数:
去除连续重复的值:
参考资料: rxjs5.X系列 —— filter系列 api 笔记:http://www.cnblogs.com/BestMePeng/p/rxjs_learn_filter.html
RxJS 入门指引和初步应用:http://web.jobbole.com/90548/
构建流式应用—RxJS详解:https://github.com/joeyguo/blog/issues/11?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io