链式Kotlin流量取决于结果状态

萨夫罗夫

我正在寻找实现以下逻辑的最“干净”的方法:

  • 我有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()
   }
 }

但是,它看起来像是众所周知的“回调地狱”。您有任何避免的想法吗?

米哈伊尔·纳夫塔尔(Mikhail Naftal)

我相信这可以用transform运算符弄平

methodA().transform { methodAResult ->
    when (methodAResult) {
        is Success -> methodB(methodAResult).collect { emit(it) }
        is Failure -> TODO()
    }
}.transform { methodBResult ->
    when (methodBResult) {
        is Success -> methodC(methodBResult).collect { emit(it) }
        is Failure -> TODO()
    }
}.transform { methodCResult ->
    when (methodCResult) {
        is Success -> TODO()
        is Failure -> TODO()
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

流量取决于外部参数?

来自分类Dev

HttpResponse - 如何设置状态码取决于 PushStreamContent 执行结果

来自分类Dev

过载取决于lambda的结果

来自分类Dev

MySQL选择取决于结果

来自分类Dev

MySQL选择取决于结果

来自分类Dev

是否播放动画取决于链式动画的animationRepeatCount

来自分类Dev

结合Kotlin流量结果

来自分类Dev

查询结果取决于单独查询的结果

来自分类Dev

Mojolicious动态路线动作取决于状态

来自分类Dev

django:使html按钮操作取决于状态

来自分类Dev

更改TD颜色取决于状态

来自分类Dev

不同结果取决于打印要求

来自分类Dev

为什么结果取决于Have子句

来自分类Dev

MySQL递归查询取决于结果

来自分类Dev

划分查询结果取决于数据

来自分类Dev

MYSQL的结果取决于其他结果?情况何时?

来自分类Dev

Valgrind在使用可变参数函数的链式调用时,条件跳转或移动取决于单位值

来自分类Dev

Redux –减速器,取决于其他状态

来自分类Dev

通知点击行为取决于应用程序的状态

来自分类Dev

Celery任务状态取决于CELERY_TASK_RESULT_EXPIRES

来自分类Dev

角度相同的路线,但布局不同,取决于登录状态

来自分类Dev

输入状态字段取决于下拉选择

来自分类Dev

显示对话框取决于ViewPager状态

来自分类Dev

反应+流星。生成异步状态取决于集合

来自分类Dev

显示结果不重复,取决于其他表mysql

来自分类Dev

能写得更好吗?调用函数取决于先前的结果

来自分类Dev

为什么optim()的结果取决于初始值?

来自分类Dev

动态Querydsl筛选器谓词取决于搜索结果

来自分类Dev

将结果传递给取决于作业-python rq