深入理解Kotlin协程
上QQ阅读APP看书,第一时间看更新

1.1.3 回调地狱

目前看来,我们给出的示例逻辑还算清晰,毕竟代码量很小。在实践当中随着代码量的增加,回调不断嵌套,就会出现大家经常提到的“回调地狱”问题,如代码清单1-4所示。

代码清单1-4 回调地狱


runOnIOThread {
  println("A")
  delay(1000){
    println("B")
    runOnMainThread {
      println("C")
    }
  }
}

尽管“回调地狱”的存在让我们的程序变得难以理解和掌控,但它却很好地反映了现实中事件交互的本质。试想一下,我们是不是经常在上班时疲于应对各种消息而无法专注地写好一段程序,最终只好求助于各种待办清单来按照重要程度管理要做的事情?与此类似,对于程序设计中复杂的异步事件交互,我们就不得不引入诸如EventBus这样的框架或者生产–消费者模型来统一管理和约束异步交互。