我正在寻找实现以下逻辑的最“干净”的方式:
- 我有N个方法,每个人都返回Flow<Result<SOME_TYPE>>(类型不同)
- 我想链接这些方法,所以如果 1 返回 Result.Success,然后调用 2nd 等等。
最明显的方法是:
methodA().map { methodAResult ->
when (methodAResult) {
is Result.Success -> {
methodB(methodAResult).map { methodBResult ->
when (methodBResult) {
is Result.Success -> {
methodC(methodAResult).map { methodCResult ->
when (methodCResult) {
is Result.Success -> TODO()
is Result.Failure -> TODO()
}
}
}
is Result.Failure -> TODO()
}
}
}
is Result.Failure -> TODO()
}
}
但它看起来像一个众所周知的“回调地狱”。你有任何想法如何避免它?