ASINetworkQueue с заказом - PullRequest
       3

ASINetworkQueue с заказом

1 голос
/ 14 декабря 2011

Я хочу сделать очередь с десятью запросами, и я хочу загрузить ее по порядку. Как мне это сделать? У тебя есть идеи?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Проверьте AFNetworking , поскольку ASIHTTPRequest больше не поддерживается.Вы можете использовать его с NSOperationQueue , который имеет свойство maxConcurrentOperationCount.Если для этого параметра установлено значение 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];
2 голосов
/ 14 декабря 2011

ASINetworkQueue выполняет все запросы в порядке их добавления в очередь. Это система «первым пришел - первым вышел» (FIFO).

Если вы хотите, чтобы все они запускались один за другим, а не параллельно, тогда вы можете установить параллелизм на 1. Очередь будет запускаться с первого запроса и запускать его один за другим, пока не дойдет до последнего запроса

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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...