В Kotlin 1.3.11 и v1.0.1 из kotlinx-coroutines-reactive
я обнаружил, что когда Publisher<Publisher<T>>
завершается до вызова consumeEach
на некоторых его внутренних издателях, эти внутренние издатели вообще не выполняютсякогда они в конечном итоге начались.Это ожидается?Рассмотрим, к примеру:
publish {
send(publish<Unit> {
// delay(1E6); // optionally try to wait a long time to verify it's not run at all
println("inner finished")
})
// send(launch { println("inner finished") }) // note: this isn't a problem for launch
println("outer finished")
}
.consumeEach {
yield()
println("try to start inner")
it.consumeEach { }
// it.join() // try this when sending `launch {}`
}
Что приводит к
outer finished
try to start inner
Process finished with exit code 0
Мой вывод на правильном пути, что это как-то связано с ProducerScope
s (так как область действия Publisher
этим, ср. документы )?