debounceTime 和 throttleTime 的弹珠图

简介: debounceTime 和 throttleTime 的弹珠图

debounceTime:测试代码

import {
  concat,
  debounceTime,
  filter,
  interval,
  mapTo,
  of,
  take,
  throttleTime,
} from 'rxjs';
const a = of(1);
const b = of(2);
const c = concat(a, b);
c.subscribe((data) => console.log(data));
const a1$ = interval(500).pipe(take(2), mapTo('A'));
const a2$ = interval(1000).pipe(take(3), mapTo('B'));
const a3$ = interval(500).pipe(take(3), mapTo('C'));
const source$ = concat(a1$, a2$, a3$);
const result$ = source$.pipe(debounceTime(800));
result$.subscribe((data) => console.log(data));

最后输出:A B B C

弹珠图:

第一阶段的两个 A,只有后者才能进入下游,因为第二个 A 和第二阶段的第一个 B,间隔时间大于 800 毫秒。


第二阶段的前两个 B 能够进入下游,而最后一个 B 不行,∵最后一个 B 和第三阶段的第一个 C 时间间隔小于 800 毫秒。


上游完结时,生成的最后一个元素,总是能进入下游。


如果改成 throttleTime,输出的序列为:A B B B C

弹珠图:


第二个 A 和 第一个 A 的时间间隔小于 800 毫秒,故不能进入下游。三个 B 的生成间隔全部大于 800 毫秒,故全部进入下游。第二个 C 生成时,距离最后一个 B 的生成已经过去了 1秒钟,时间间隔大于 800 毫秒,故第二个 C 进入下游。

相关文章
|
7月前
|
算法
|
7月前
|
存储
|
4月前
|
算法 决策智能 索引
二部图问题
二部图问题
|
5月前
|
算法
暗藏玄机的璇玑图
暗藏玄机的璇玑图
76 0
|
6月前
|
人工智能 计算机视觉 开发者
一、图 图是由一组节点和边组成的非线性数据结构,用于描述节点之间的关系。图的节点称为顶点,边表示顶点之间的连接关系。图可以用于描述现实世界中的各种关系,例如社交网络中的好友关系、城市之间的道路连接、电路中的元器件连接等。 图的主要特点包括: 1. 顶点:图的基本单位,用于表示实体或抽象概念。 2. 边:用于表示顶点之间的连接关系,可以是有向或无向的,带权或不带权的。 3. 路径:连接图中两个顶点的路径是由一系列相邻的边构成的序列。 4. 连通性:如果图中任意两个顶点之间都存在路径,则称该图为连通图,否则为非连通图。 5. 度:顶点的度表示与该顶点相邻的边的数量。 6. 子图:图中的一部分称为子
23 0
|
9月前
|
算法
N-S图详解
N-S图详解
498 0
|
9月前
E—R图总结
E—R图总结
45 0
|
9月前
E-R图的认识
E-R图的认识
|
9月前
|
数据可视化 算法 架构师
各种图介绍
系统架构师-UML相关图
53 0
|
存储 算法 C++