16 lines
412 B
Kotlin
16 lines
412 B
Kotlin
package de.timklge.karooheadwind
|
|
|
|
import kotlinx.coroutines.flow.Flow
|
|
import kotlinx.coroutines.flow.flow
|
|
|
|
fun<T> Flow<T>.throttle(timeout: Long): Flow<T> = flow {
|
|
var lastEmissionTime = 0L
|
|
|
|
collect { value ->
|
|
val currentTime = System.currentTimeMillis()
|
|
if (currentTime - lastEmissionTime >= timeout) {
|
|
emit(value)
|
|
lastEmissionTime = currentTime
|
|
}
|
|
}
|
|
} |