前言
Callback 是英文的回调,可以看出来类似一个等电话的操作。
比如你想去买东西,没货了。于是留下号码等店员通知到货再去买。当然这期间你可以干其他事,直到店员通知你去。
所以回调的产生需要AB两个角色,而其中B的流程依赖于A的结果。当然还需要异步,也就是A不必堵塞B的执行,直到A回调给了B结果。
回调在Android中处处可见,通常的异步网络访问都需要回调给调用函数。
问题
最近我在修改一个老项目,从服务器移植到Android平台。这个服务器访问网络使用的HttpClient 而。最可怕的事情来了,因为服务器不需要异步访问网络,所以每个网络访问都是同步的,而且每个结果依赖于上个访问结果。
而在移植的项目中,因为每次的网络结果都需要在UI显示,所以每个访问都需要异步。而异步结果又需要在回调里得到,于是形成了回调嵌套回调的结果。
整体代码形成一个倒的三角形,非常难以阅读。我们称之为 回调地狱
解决
关于java的回调地狱Rxjava的解决
网友评论