gpt4 book ai didi

javascript - Rx distinctUntilChanged 允许在事件之间的可配置时间后重复

转载 作者:数据小太阳 更新时间:2023-10-29 04:09:47 25 4
gpt4 key购买 nike

让我们考虑一下下面的代码

Rx.Observable.merge(
Rx.Observable.just(1),
Rx.Observable.just(1).delay(1000)
).distinctUntilChanged()
.subscribe(x => console.log(x))

我们希望 1 只记录一次。然而,如果我们想要允许重复一个值,如果它的最后一次发射是在可配置的时间之前呢?我的意思是记录这两个事件

例如,如果有类似下面的东西会很酷

Rx.Observable.merge(
Rx.Observable.just(1),
Rx.Observable.just(1).delay(1000)
).distinctUntilChanged(1000)
.subscribe(x => console.log(x))

其中 distinctUntilChanged() 接受某种超时以允许重复下一个元素。然而,这样的事情并不存在,我想知道是否有人知道一种优雅的方法来实现这一点,即使用高级运算符而不用弄乱需要处理状态的过滤器

最佳答案

除非我误解了,否则我很确定这可以通过 windowTime 以相对直接的方式完成:

Observable
.merge(
Observable.of(1),
Observable.of(1).delay(250), // Ignored
Observable.of(1).delay(700), // Ignored
Observable.of(1).delay(2000),
Observable.of(1).delay(2200), //Ignored
Observable.of(2).delay(2300)
)
// Converts the stream into a stream of streams each 1000 milliseconds long
.windowTime(1000)
// Flatten each of the streams and emit only the latest (there should only be one active
// at a time anyway
// We apply the distinctUntilChanged to the windows before flattening
.switchMap(source => source.distinctUntilChanged())
.timeInterval()
.subscribe(
value => console.log(value),
error => console.log('error: ' + error),
() => console.log('complete')
);

参见示例 here (借用@martin 的示例输入)

关于javascript - Rx distinctUntilChanged 允许在事件之间的可配置时间后重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41698896/

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