Arrow.kt加载状态



我多次使用arrow.kt库,我真的很喜欢它们为扩展kotlin提供的功能。我喜欢Either<E,T>如何无缝地表示成功/失败状态。我只是想知道arrow.kt是否有一种方法来表示加载状态以及其他两种。换句话说,我们将有一个提供三种状态的类型:SuccessFailureLoading

我尝试使用Option<T>作为正确的成员,但None不能根据需要表示加载状态。

有什么我可以试试的吗?

Either<A, B>表示单个结果。你对左边或右边感兴趣。没有第三个。你可以用多种方式演奏。

  1. 例如,将FailureSuccess都视为正确的结果
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。

  1. 或具有Either<Loading, Either<Failure, Success>>

如果您希望收到多个响应,对Flow<State>或rx Observable的某种订阅甚至可能比单个结果更适合您。

相关内容

  • 没有找到相关文章

最新更新