同步请求和异步请求前几步是一样的

通过call对象调用异步请求,内部传入callback参数,
在callback结束之后,如果成功就是onResponse(),
失败就是onFalure()

enqueue()里面是接口,在实现类当中,会通过synchronized关键字锁住当前的对象,这个对象就是RealCall对象

if判断里面和同步请求一样,当为true的时候就是执行过了,如果执行过了就会抛出异常
不管是异步还是同步只能执行一次
总结:okhttp异步请求:AsyncCall、线程池、双向队列
1.生成了一个OkhttpClient对象
2.创建request对象
3.通过call对象的enqueuq方法来进行异步网络请求
4.拦截器链
不管异步请求还是同步请求真正的网络请求都是通过网络拦截器链来实现的。每一个拦截器的作用是不一样的,最终会得到服务器的数据返回
网友评论