javascript - RxJs Debounce 不发出任何值
问题描述
据我所理解,debounce
keeps track of the most recent value from the source Observable, and spawns a duration Observable by calling the durationSelector function
我有以下代码
import { interval } from 'rxjs';
import { debounce } from 'rxjs/operators';
const data = interval(1000);
const silenceTimer = interval(2000);
data.pipe(debounce(val => silenceTimer)).subscribe(x => console.log(x));
我希望它会发出 1、3、5 等,但它根本不会发出任何值。我是否正确理解了操作员,还是我做错了什么。谢谢
编辑:我明白为什么现在没有发出任何值!因为间隔 2000 大于生成间隔 1000,所以所有值都被丢弃。如果我将去抖动间隔减少到 500,所有值都将被发出
解决方案
从文档:
debounce()
只有在另一个 Observable 确定的特定时间跨度过去且没有另一个源发射时,才从源 Observable 发射一个值。
注意这句话:没有其他源排放。在您的情况下,间隔将在您的 durationSelector 的 2000 毫秒内继续产生排放,因此debounce()
永远没有机会发射。
推荐阅读
- amazon-web-services - nginx 作为 EKS 上的负载均衡器
- java - 圆形按钮在网格布局中显示为矩形
- node.js - 我正在为一个游戏制作一个 api,其中分数通过 heroku 保存到 postgresql 数据库
- html - 核心网络生命体征标记的图像元素没有明确的宽度和高度
- node.js - Heroku 应用程序立即终止,而不是通过 SIGTERM 正常关闭
- java - 使用 Azure ADB2C 令牌的 RabbitMQ 身份验证不起作用
- android - WifiP2pDevice 在 android Q 中没有返回正确的 deviceAddress
- c++ - 用不同文件中的数组定义函数
- java - apache poi SXSSFWorkbook - java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z
- code-analysis - 数据流分析、控制流分析、切片分析和污染分析之间有什么关系吗?