菜鸟教程小白 发表于 2022-12-12 08:53:45

ios - 发出太多 AFNetworking 请求时超时


                                            <p><p>我有这个代码可以下载 40 json</p>

<pre><code>NSMutableArray *mutableOperations = ;
    for (NSDictionary *dict in general_URL) {

      NSURL *url = ;
      NSString *key = ;

      NSURLRequest *request = ;

      AFHTTPRequestOperation *operation = [ initWithRequest:request];
      operation.responseSerializer = ;
      [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

             forKey:key];

      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@&#34;Error: %@&#34;, error);
      }];

      ;
    }

    NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:mutableOperations progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {
      NSLog(@&#34;progress:%f&#34;, (float)numberOfFinishedOperations / totalNumberOfOperations);
    } completionBlock:^(NSArray *operations) {

      NSLog (@&#34;all done&#34;);

    }];
    ;
</code></pre>

<p>如您所见,我使用管理器来处理请求队列。问题是突然间,它以 -1001 代码超时。
它仅在 EDGE 模式下发生,在 wifi 和 3g 下不会发生。</p>

<p>有什么问题?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果您指定操作队列的 <code>maxConcurrentOperationCount</code>,它将控制尝试并发操作的数量,从而减少由于 iOS 限制允许同时网络连接的数量而导致的任何超时:</p>

<pre><code>manager.operationQueue.maxConcurrentOperationCount = 4;
;
</code></pre>

<p>如果没有这个,当你提交你的 40 个操作时,所有这些操作都可能会尝试启动 <code>NSURLConnection</code> 对象,即使一次只能真正运行 4 或 5 个。在慢速连接上,这可能会导致您后面的一些请求超时。</p>

<p>如果您指定 <code>maxConcurrentOperationCount</code>,它不会尝试启动后面的连接,直到前面的连接完成。您仍将享受并发请求的性能优势,但您不会因为 iOS 强制执行并发 <code>NSURLConnection</code> 请求的限制而发出一堆超时的请求。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 发出太多 AFNetworking 请求时超时,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/22617233/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/22617233/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 发出太多 AFNetworking 请求时超时