我正在使用回傳流的 Preference API。在某些情況下,我需要組合來自不同偏好的值。我知道我可以使用
flow.combine.
由于我需要組合的方法是一個suspend函式,并且流中的值不再需要流到任何地方,我還可以定義如下內容:
suspend fun <T> Flow<T>.currentValue(): T {
var res: T? = null
this.collect {
res = it
}
return res!!
}
然后一次只讀取一個值:
val val1 = flow1.currentValue()
val val2 = flow2.currentValue()
val val3 = flow3.currentValue()
有沒有更好的方法來做到這一點?還是我應該只使用該combine方法?
uj5u.com熱心網友回復:
您不需要定義currentValue函式。已經有一個Flow.first()函式回傳 Flow 的第一個值。由于這些 Flows 被設計為始終使用首選項的當前值發出初始值,因此這將正常作業。
旁注,您的currentValue()函式永遠不會回傳,因為collect在 Flow 完成之前不會回傳。
您是要單獨呼叫first()每個 Flow 還是combine所有這些Flow并呼叫first()組合的 Flow 取決于您。我認為這兩種方式都不干凈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375839.html
標籤:安卓 科特林 kotlin-flow
