ASINetworkQueue与订单

时间:2011-12-13 20:23:59

标签: iphone objective-c cocoa-touch

我想用十个请求创建队列,我想按顺序加载它。 我该怎么做?你有什么想法吗?

2 个答案:

答案 0 :(得分:2)

ASINetworkQueue按照它们插入队列的顺序运行所有请求。它是先进先出(FIFO)系统。

如果你想确保它们一个接一个地运行而不是并行运行,那么你可以将并发设置为1.队列将从第一个请求开始并逐个运行,直到它到达最后一个请求< / p>

ASINetworkQueue *networkQueue = [[ASINetworkQueue alloc] init];

// Here we add all our 10 requests, the order in which we add
// them determines the order they will execute

// Set the concurrency to 1 and fire off the queue
[networkQueue setMaxConcurrentOperationCount:1];
[networkQueue go];

答案 1 :(得分:2)

检查AFNetworking,因为不再维护ASIHTTPRequest。您可以将NSOperationQueue用于具有属性maxConcurrentOperationCount的{​​{3}}。如果将其设置为1:

  

将最大操作数设置为1有效地创建了一个用于处理操作的串行队列。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://gowalla.com/users/mattt.json"]];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSLog(@"Name: %@ %@", [JSON valueForKeyPath:@"first_name"], [JSON valueForKeyPath:@"last_name"]);
} failure:nil];

NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
[queue setMaxConcurrentOperationCount:1];
[queue addOperation:operation];
[queue addOperation:anotherOperation];