一連の AFJSONRequestOperation を順番に実行し、失敗したときにキューを中断できるようにしたい。
現時点では、次の操作が開始される可能性があるため、私のやり方は信頼できません。
APIエンドポイントを呼び出すシングルトンがあります
AFJSONRequestOperation *lastOperation; // Used to add dependency
NSMutableArray *operations = [NSMutableArray array]; // Operations stack
AFAPIClient *httpClient = [AFAPIClient sharedClient];
[[httpClient operationQueue] setMaxConcurrentOperationCount:1]; // One by one
そして、この方法で操作を追加します
NSMutableURLRequest *request = ...; // define request
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
// Takes care of success
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
[[httpClient operationQueue] setSuspended:YES];
[[httpClient operationQueue] cancelAllOperations];
}];
[push:operation addDependency:lastOperation];
[operations $push:operation]; // This is using ConciseKit
lastOperation = operation;
// Repeat with other operations
// Enqueue a batch of operations
[httpClient enqueueBatchOfHTTPRequestOperations:operations ...
問題は、失敗した操作に続く操作がまだ開始される可能性があることです。
そのため、最大 1 つの同時操作と依存関係チェーンを持つだけでは、障害コールバックが完全に実行されるまで待機するようにキューに指示するには不十分なようです。
これを行う適切な方法は何ですか?
ありがとう