我有2个流。第一个流每50ms更新一次。我有第二个流,它等于第一个流,但我希望它每300ms从原始流产生最新值。我发现debounce
扩展流,但它不工作(来自文档的注解):Note that the resulting flow does not emit anything as long as the original flow emits items faster than every timeoutMillis milliseconds.
因此,当我尝试通过去抖每300 ms发射一次值时,它根本不发射,因为原始流比我需要的更快。那么,我如何才能做出这样的东西呢?
1.延迟300ms
1.检查最新值的原始流量
1.发出此值
1.重复
我现在的流程:
// fast flow (50ms)
val orientationFlow = merge(_orientationFlow, locationFlow)
val cameraBearingFlow = orientationFlow.debounce(300ms)
P.S.这种方法不适用,因为我们延迟了值,所以300ms后它不是最新的。我需要在300ms后获得最新的值:
val cameraBearingFlow = azimuthFlow.onEach {
delay(ORIENTATION_UPDATE_DELAY)
it
}
1条答案
按热度按时间yyyllmsg1#
你需要
sample
而不是谴责