网络请求取消机制的设计

网络请求取消机制的设计

背景
1. 前端开发,我们时常要遇到一种网络操作:取消网络请求。
   ASI、AFN等网络框架都提供了cancel机制。因此,实际上我们面对的问题是“how to find that Request and Cancel it”。
2. 而大部分我接触到的项目,曾经的实现都缺乏良好的“取消操作”设计或者干脆没有。
3. 其实,许多操作都涉及到两面:发送与取消。
4. 相比较其他操作,网络请求更偏向无状态,难跟踪与管控。比如一个Get HTTP请求,一旦发送出去,便无法取消。
任务
1. 设计一套机制,实现取消曾经发出的网络请求。
分析
1. 问题的关键在于:存储UI<--->Request,一对一关系。当保存了这份关系图之后,就可以方便的CRUD操作,并且在框架提供的cancel机制上,实现取消指定请求的功能。
2. 由于UI可能性的短暂生命周期的原因,并不适合直接保存它以及请求之间的关系。
   那么,就应该选择一个不会变化的量,来建立与Request的对应关系,同时这个量不会因为UI生命周期变动而发生变动(这个变动指用户角度的变化)。
3. 另外,这个量应该是全局唯一的。因为这应该是一个集中式控制中心。
   综上所述,Request parameter是比较好的选择。
4. 以OC为例,从效率看,字典在CRUD效率上很好,是比较合适的存储这个关系。
具体设计
1. ControllerCenter Class
   attribute:
   		relationship Dictionary
   method:
   		-add,create and store relationship in dic.
   		-remove,select and delete relationship in dic.
   		-select,condition retrieve request.
   		-keydigest,obtain key digest and use digest for dic key.

网络请求取消机制设计

结果
1. 完成逻辑简图,设计了控制中心类。
2. 按照以上分析与设计,实现控制中心类,就可以实现出取消机制。同时,结合发送和回调,就形成一个完整的网络请求控制中心。

转载于:https://my.oschina.net/treebug/blog/1575365

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值