我多次使用arrow.kt
库,我真的很喜欢它们为扩展kotlin提供的功能。我喜欢Either<E,T>
如何无缝地表示成功/失败状态。我只是想知道arrow.kt
是否有一种方法来表示加载状态以及其他两种。换句话说,我们将有一个提供三种状态的类型:Success
、Failure
、Loading
。
我尝试使用Option<T>
作为正确的成员,但None
不能根据需要表示加载状态。
有什么我可以试试的吗?
Either<A, B>
表示单个结果。你对左边或右边感兴趣。没有第三个。你可以用多种方式演奏。
- 例如,将
Failure
和Success
都视为正确的结果
sealed interface State {
object Loading: State
sealed interface Result: State {
object Failure: Result
object Success: Result
}
}
//...
getState().map { result ->
when(result) {
Failure -> TODO("Handle error")
Success -> TODO("Handle success")
}
}.mapLeft { loading -> TODO() }
并返回CCD_ 12。
- 或具有
Either<Loading, Either<Failure, Success>>
如果您希望收到多个响应,对Flow<State>
或rx Observable
的某种订阅甚至可能比单个结果更适合您。