我有3個流程:
val flow1 = ... //從應用啟動時發出的值。
val flow2 = ... //從應用程式啟動時發出的值。
val flow3 = someBooleanFlow.flatMapLatest{ if(it)flowOf(42) else emptyFlow() } //當用戶注冊時發出。
我需要:
val state = flow1.flatMapConcat{ value1 ->
flow2.flatMapConcat{ value2 ->
flow3.flatMapConcat{ value3 -> when{ ... } //所以如果flow3是空的,value3不會被接收,。
//但是我需要它的默認值來執行 "when "邏輯。
}
}
}
問題是,當其中一個流沒有發出時,如何在flatMapConcat中取一個默認值?
這個問題對combine
uj5u.com熱心網友回復:
你可以在Flow上使用onStart來發射一個初始值:
val flowWithInitialValue = sourceFlow.onStart { emit(initialValue) }
你也可以為此使用一個StateFlow,并在構建時提供你的初始值。
我猜測flow3代表了登錄用戶的某種用戶ID
在這種情況下,我不會使用一個emptyFlow()來代表非登錄的情況。你可能會使用一個可歸零的用戶ID或一個密封的類作為你的流程的元素,所以你可以發射null或UserLoginStatus.Anonymous作為第一個默認值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328851.html
標籤:
