I’m all for Kotlin, but as others noted, your Kotlin example doesn’t do what it should, and it uses obsolete consumeEach. Consider something like using Timer instead:

fun CoroutineScope.debouncingActor(delay: Long) = actor<String> {
var t = Timer()

for (msg in channel) {
t.cancel()
t = Timer()
t.schedule(delay) {
println(msg)
}
}
}

Solutions Architect @Depop, author of “Hands-on Design Patterns with Kotlin” book and “Web Development with Kotlin” course

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store