Skip to content

Instantly share code, notes, and snippets.

@PatilShreyas
Last active October 22, 2023 07:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PatilShreyas/b8c2326e84702cc5f08d22fa6c4cbe4d to your computer and use it in GitHub Desktop.
Save PatilShreyas/b8c2326e84702cc5f08d22fa6c4cbe4d to your computer and use it in GitHub Desktop.
suspend fun collect(collector: FlowCollector<List<T>>) = coroutineScope<Unit> {
// For storing un-emitted values
val values = mutableListOf<T>()
// Continue looping after intervals `duration` and emit the items in the collector
// and clear the existing items from the `values`.
launch {
while (true) {
delay(duration)
collector.emit(values.toList())
values.clear()
}
}
// Collect the upstream flow and add the items to the above `values` list
upstream.collect {
values.add(it)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment