А
Работай с ней так же.
Size: a a a
А
EP
А
EP
BP
BP
EP
StateFlow
, но уже, похоже, не хочу :)BP
StateFlow
, но уже, похоже, не хочу :)EP
RxJava
, где Hot и Cold observables позволяют менять контекст вычислений ниже по потоку. А тут начал изучать StateFlow
и вижу, flowOn
deprecated. Вот и хотел узнать а что если вдруг надо поменять контекст ниже по потоку, как это верно сделатьEP
map
возвращается уже обычный flow
, надо будет потестироватьBP
RxJava
, где Hot и Cold observables позволяют менять контекст вычислений ниже по потоку. А тут начал изучать StateFlow
и вижу, flowOn
deprecated. Вот и хотел узнать а что если вдруг надо поменять контекст ниже по потоку, как это верно сделатьА
RxJava
, где Hot и Cold observables позволяют менять контекст вычислений ниже по потоку. А тут начал изучать StateFlow
и вижу, flowOn
deprecated. Вот и хотел узнать а что если вдруг надо поменять контекст ниже по потоку, как это верно сделатьEP
А
EP
EP
@Test
fun testStateFlow() {
runBlocking {
launch(GlobalScope.coroutineContext) {
val state = MutableStateFlow<Int>(1)
state
.onEach { log("First ${Thread.currentThread().name}") }
.flowOn(newSingleThreadContext("Thread1"))
.onEach { log("Second ${Thread.currentThread().name}") }
.flowOn(newSingleThreadContext("Thread2"))
.onEach { log("Third ${Thread.currentThread().name}") }
.launchIn(GlobalScope)
log("Emit ${Thread.currentThread().name}")
state.value = 1
delay(100)
}
}
}
fun log(s: String) {
System.out.println(s)
}
Emit main @coroutine#2
First Thread1 @coroutine#5
Second Thread2 @coroutine#4
Third DefaultDispatcher-worker-2 @coroutine#3
flowOn
не работает только непосредственно для StateFlow
, после трансформаций уже работаетА
А
@Test
fun testStateFlow() {
runBlocking {
launch(GlobalScope.coroutineContext) {
val state = MutableStateFlow<Int>(1)
state
.onEach { log("First ${Thread.currentThread().name}") }
.flowOn(newSingleThreadContext("Thread1"))
.onEach { log("Second ${Thread.currentThread().name}") }
.flowOn(newSingleThreadContext("Thread2"))
.onEach { log("Third ${Thread.currentThread().name}") }
.launchIn(GlobalScope)
log("Emit ${Thread.currentThread().name}")
state.value = 1
delay(100)
}
}
}
fun log(s: String) {
System.out.println(s)
}
Emit main @coroutine#2
First Thread1 @coroutine#5
Second Thread2 @coroutine#4
Third DefaultDispatcher-worker-2 @coroutine#3
flowOn
не работает только непосредственно для StateFlow
, после трансформаций уже работаетEP
EP