协程
Kotlin 协程的核心竞争力在于:它能简化异步并发
任务。
作为 Java 开发者,我们很清楚线程并发
是多么的危险,写出来的异步代码是多么的难以维护。
3. 异步代码 & 回调地狱
以一段简单的 Java 代码为例,我们发起了一个异步请求,从服务端查询用户的信息,通过 CallBack 返回 response:
getUserInfo(new CallBack() {
@Override
public void onSuccess(String response) {
if (response != null) {
System.out.println(response);
}
}
});
复制代码
到目前为止,我们的代码看起来并没有什么问题,但如果我们的需求变成了这样呢?
查询用户信息 --> 查找该用户的好友列表 -->拿到好友列表后,查找该好友的动态
getUserInfo(new CallBack() {
@Override
public void onSuccess(String user) {
if (user != null) {
System.out.println(user);
getFriendList(user, new CallBack() {
@Override
public void onSuccess(String friendList) {
if (friendList != null) {
System.out.println(friendList);
getFeedList(friendList, new CallBack() {
@Override
public void onSuccess(String feed) {
if (feed != null) {
System.out.println(feed);
}
}
});
}
}
});
}
}
});
复制代码
有点恶心了,是不是?这还是仅包含 onSuccess 的情况,实际情况会更复杂,因为我们还要处理异常,处理重试,处理线程调度,甚至还可能涉及多线程同步。
作者:朱涛的自习室
链接:https://juejin.cn/post/6883652600462327821
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。