Параллельная обработка значений, излучаемых потоком в Kotlin - PullRequest
1 голос
/ 10 января 2020

Kotlin код

runBlocking {
    flow {
        for (i in 0..4) {
            println("Emit $i")
            emit(i)
        }}  .onEach { if (it%2 == 0) delay(200) // Block 1
                println("A: got $it")
            }
            .onEach { println("B: got $it") } // Block 2
            .collect()
}

печать в консоли:

Emit 0
A: got 0
B: got 0
Emit 1
A: got 1
B: got 1
Emit 2
...

Как я могу запустить параллельный процесс как block1, так и block2, чтобы получать сообщения из блока 2 перед блоком 1 пополам случаи?

...