iOS开发--用户点击频繁,多个异步网络请求取消问题?

Posted 溺水的小小鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发--用户点击频繁,多个异步网络请求取消问题?相关的知识,希望对你有一定的参考价值。

一、业务环境描述

当一个view同时添加两个tableView为subView的时候,两个tableView分别为mainTable和subTable。

当用户点击mainTable上的某一条数据时,再去发送网络请求subTable中的数据。

存在问题的地方:例如当用户在mainTable上频繁点击各条cell上面的数据时,会出现subTable中数据错乱问题。那么如何取消之前的网络请求呢???

注:网络请求为异步请求

二、解决方法 1.实例化一个AFHTTPRequestOperationManager对象

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] init];

2.调用POST方法,返回一个AFHTTPRequestOperation对象

    AFHTTPRequestOperation *operation = [manager POST:urlStr parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    }];

3.判断operation对象是否已经实例化,如果是,就取消这个请求操作;如果否,就重新执行上面第1、2两步。

    if (subTableOperation)// 如果已经有请求了,就直接取消掉。
    {
        [subTableOperation cancel];
    }
    // 请求不存在,重新实例化一个
    subTableOperation = [APITool getSubTableListData:@"test" callBack:^(NSNumber *success, id response) {
        // 处理网络回调数据 和 reloadData
    }];
    [subTableOperation start];

具体代码 : Demo_OperationOfCancel

转自:http://blog.5ibc.net/p/88308.html

以上是关于iOS开发--用户点击频繁,多个异步网络请求取消问题?的主要内容,如果未能解决你的问题,请参考以下文章

取消(中止)异步请求

vue axios请求频繁时取消上一次请求

vue路由跳转取消上个页面的异步请求

iOS项目开发实战——使用同步请求获取网页源码

和浏览器异步请求取消相关的那些事

微信小程序使用promise封装异步请求