代码之家  ›  专栏  ›  技术社区  ›  ShurupuS

在AFNetworking中只需要执行一个HTTP操作,然后取消上一个操作

  •  0
  • ShurupuS  · 技术社区  · 9 年前

    我使用 AFNetworking 框架,并需要将此逻辑应用于我的web请求:

    • 只有一个请求正在执行;
    • 如果新请求准备就绪,我需要取消前一个请求并执行新请求。

    我明白了 AFHTTPRequestOperation 是一个 NSOperation 子类,因此我可以编写自己的请求管理器,但正如我所见 AFHTTPRequestOperationManager 在框架中。我只发现我可以在这里创建一个并发队列,这样我的请求就会一个接一个地执行。我能用 AFHTTPRequestOperationManager ? 谢谢

    1 回复  |  直到 9 年前
        1
  •  1
  •   Miknash    9 年前

    我也会将此作为答案。因此,我们的想法是:

    -为AFNetworkingOperation创建属性:

    @property AFHTTPRequestOperation *post;
    

    -在初始值设定项中:

    self.post = nil;
    

    -在调用请求的函数中:

    if(self.post){
        [post cancel];
    }
    

    -您需要稍后分配self.post:

    self.post = [manager POST:nil parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
      self.post = nil;
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
       // error handling.
    }];