Flowables

In all previous examples, we emitted data using Observable or subject, which also extends Observable, and it worked out pretty well.

But our listeners weren't doing much. What if they were to do something more substantial?

Let's see the following example. We'll produce a lot of unique strings:

val source = Observable.create<String> {    var startProducing = System.currentTimeMillis()    for (i in 1..10_000_000) {        it.onNext(UUID.randomUUID().toString())        if (i % 100_000 == 0) {            println("Produced $i events in ${System.currentTimeMillis() - startProducing}ms")            startProducing = System.currentTimeMillis()        }    }    latch.countDown()}

We're using CountDownLatch so the main thread will be able to wait until we finish. In addition, we're also printing ...

Get Hands-On Design Patterns with Kotlin now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.