Реактивные каналы Kotlin: вложенный издатель не запустится после завершения родительского задания? - PullRequest
0 голосов
/ 09 декабря 2018

В 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этим, ср. документы )?

...