gpt4 book ai didi

javascript - RxJs:distinctUntilChanged 仍然发出重复值

转载 作者:行者123 更新时间:2023-11-29 15:26:36 25 4
gpt4 key购买 nike

我有一个值流,我使用下限和上限来限制,为了减少日志记录量,我只想在值发生变化时发出它们。问题是以下代码段中的第二个 distinctUntilChanged() 仍然会产生重复项:

Observable // emits i.e. [2, 2, 2, 5, 5, 10, 20]
.distinctUntilChanged() // becomes [2, 5, 10, 20]
.map(target => {
const correctedTarget = Math.min(Math.max(target, MINIMUM), MAXIMUM); // Let's say min: 5, max: 10
if(correctedTarget != target) {
logger.warn(`Prediction wants to scale out-of-bounds to ${target}, limiting to ${correctedTarget}`);
}
return correctedTarget;
}) // becomes [5, 5, 10, 10]
.distinctUntilChanged() // should be [5, 10], but is [5, 5, 10, 10]

RxJs 文档声明过滤器默认为简单的相等比较,所以我希望这应该 Just Work™。

最佳答案

我的一位同事(再次)发现了问题(也感谢您的帮助 Matt )。事实证明,最初的假设是错误的——代码大纲如下:

Observable // emits credentials on some interval
.flatmap(credentials => {
return Observable2.doSomething()
.distinctUntilChanged()
...
})

如您所见,distinctUntilChanged 链接到 Observable2,这是每次发出凭据时新的可观察流。这也解释了为什么我做的比较器函数根本没有被调用:每次只有一个值,所以没有什么可以比较的。

关于javascript - RxJs:distinctUntilChanged 仍然发出重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38699020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com