2011-05-03 182 views
0

我需要在for循环中进行一系列http异步请求调用。但是之后我需要等待下载完成才能进行响应,然后再进行下一个请求而不会崩溃。所以使用NSNotification(或其他)如何处理这个问题。一系列http异步请求调用

回答

0

当你做一个异步请求时,你不需要等待。但是,您需要正确处理这些响应。您可以检查目前似乎是SO上的开发人员最喜欢的ASIHttpRequest库。 如果你必须等待回应,那么你不会异步执行。

即将使用NSNotification,更好的更清洁和更简单的方法将是使用协议。这样您可以实现委托并在每次调用委托方法时向您发送下一个请求。

0

您希望在后台运行多个串行请求,并等待每个请求在下一个开始之前完成。这与在后台运行其他任何东西没有区别。下面是我掀起了:

[self performSelectorInBackground:@selector(runRequests) ...]; 

- (void)runRequests 
{ 
    for (int i = 0; i < self.urls.count; i++) { 
     NSURL *url = [self.urls objectAtIndex:i]; 
     ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
     [request startSynchronous]; // Note: not asynchronous 
     // Handle response ... 
     ALog(@"%@ completed", url); 
    } 
    [[NSNotificationCenter defaultCenter] 
      postNotificationName:@"all requests completed!" object:nil]; 
} 

我使用ASIHTTRequest这里,但使用的NSURLRequest作品一样好在这种情况下。重要的是请求运行完成。

0

可以通过使用线程如下做

[NSThread detachNewThreadSelector:@selector(myMethod1)toT​​arget:自withObject:无];

[NSThread detachNewThreadSelector:@selector(myMethod2)toTarget:self withObject:nil];

[NSThread detachNewThreadSelector:@selector(myMethod3)toTarget:self withObject:nil];

等等........... 您可以异步地在这些方法中传递您的请求。