![](/img/trans.png)
[英]How to emit Flow value from different function? Kotlin Coroutines
[英]How to emit latest value with delay from faster original flow?
我有 2 個流程。 第一個流每 50 毫秒更新一次。 我有第二個流量等於第一個流量,但我希望它每 300 毫秒從原始流量中產生最新值。 我找到了流的debounce
擴展,但它不起作用(來自文檔的注釋):
Note that the resulting flow does not emit anything as long as the original flow emits items faster than every timeoutMillis milliseconds.
因此,當我嘗試使用去抖動每 300 毫秒發射一次值時,它根本不會發射,因為原始流量比我需要的要快。 那么我怎樣才能做這樣的事情:
我現在的流程:
// fast flow (50ms)
val orientationFlow = merge(_orientationFlow, locationFlow)
val cameraBearingFlow = orientationFlow.debounce(300ms)
PS 這種方法不適合,因為我們延遲了值,所以它在 300 毫秒后就不新鮮了。 我需要在 300 毫秒后獲取最新值:
val cameraBearingFlow = azimuthFlow.onEach {
delay(ORIENTATION_UPDATE_DELAY)
it
}
你需要sample
而不是譴責
val f = fastFlow.sample(300)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.