javascript - 覆盖 BehaviorSubject 中的值会创建越来越大的条目
问题描述
我BehaviorSubject
用来存储一些数据并在将来获取它。这是一些示例代码来重现我遇到的奇怪问题:
var subject = new BehaviorSubject<any>(undefined);
subject.next(1); // Store the value 1 into 'subject'
subject.asObservable().subscribe((data) => { console.log(data); });
// Output: 1
subject.next(2); // Store the value 2 into 'subject'
subject.asObservable().subscribe((data) => { console.log(data); });
// Output 2 \n 2 (logs twice)
subject.next(1); // Store the value 1 into 'subject'
subject.asObservable().subscribe((data) => { console.log(data); });
// Output: 1 \n 1 \n 1 (logs three times)
从我在线阅读的内容来看,我希望subject.next()
覆盖 Observable 中的值,它正在这样做,但我不希望它返回这些额外的尾随等效值。
编辑:我不知道 subscribe() 类似于 EventListener,只要可观察到的变化就会被调用。这是产生预期输出的代码:
var subject = new BehaviorSubject<any>(undefined);
subject.next(1); // Store the value 1 into 'subject'
subject.asObservable().subscribe((data) => { console.log(data); });
subject.next(2); // Store the value 2 into 'subject'
subject.next(1); // Store the value 1 into 'subject'
解决方案
推荐阅读
- java - 将 compareTo 与 arrayList 一起使用的问题
- python-3.x - 函数中的“如果语句”基于 while 循环设置持续时间输出太多字符
- java - 我并行配置了 TestNG 测试,但它不起作用
- node.js - 为什么要选择独立的 socket.io 服务器 vs. Express vs. node http?
- asp.net - 如何让 ASP.NET 网站和 ASP.NET Core 网站在同一台服务器上工作
- git - 有没有办法根据项目文件夹/文件的最后修改时间提交?
- python - 根据熊猫中的不同列条件选择移位的列值
- python - 如何在气流中基于另一个 AWS-glue 任务成功完成在气流中启动 python 操作员 boto3 AWS-glue 任务?
- r - 使用交叉验证功能的 Knn
- python - SyntaxError:在将 matlab 代码转换为 Python 时无法分配给函数调用