Copyright © 2017年ZaneWangWang. All rights reserved.
需求分析:
最近项目中购物车要求缓存到服务器,然而在非编辑状态下要求单个商品修改数量的时候调用服务器的修改接口使之与服务器商品数量保持一致,如果用户不停点击添加或者减少的按钮,由于请求需要耗时,当再次修改的时候上次请求没有结束老是报错,因此需要在每次点击发送请求之前中断之前的请求。
分析实现:
查看NSURLSession.h文件发现有以下三个方法:
- (void)cancel;//取消
- (void)suspend;//暂停
- (void)resume;//重新发起
这三个方法都属于NSURLSessionTask类,因此,要取消请求就需要获取NSURLSessionTask对象。在发送请求的时候只需要保留AFNetworking以下方法的返回值即可获取。
- (NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(id)parameters
progress:(void (^)(NSProgress * _Nonnull))uploadProgress
success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success
failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure;
注意:
假设我们获取到的对象调用了取消方法如下:
[task cancel];
此时,请求中断会返回failure,错误信息error.localizedDescription为canceled,我们需要加上响应的判断,保证取消了的请求不会给用户报错误的信息。
网友评论