3

順次実行される一連のサーバー呼び出しを実行する必要があります。1つの要求は、以前のすべての要求が成功した場合にのみ実行できます。

だから、私のアイデアは、AFHTTPRequestOperationリクエストごとにを作成し、それらを実行するために使用[myAFHTTPClient enqueueBatchOfHTTPRequestOperations:]することでした。

を呼び出すことで、それらを順番に実行させることができます
[myAFHTTPClient.operationQueue setMaxConcurrentOperationCount:1]

しかし、前の操作が成功した場合にのみ残りの操作が実行されるようにするにはどうすればよいですか?

操作が失敗した場合にcompletionBlock呼び出すすべての操作に対してを作成しようとしましたが、completionBlockとキュー内の次の操作が同時に実行されるため、キャンセルされる前に次の要求がサーバーに送信されている可能性があります。[myAFHTTPClient cancelAllOperations]私は何をすべきか?

4

1 に答える 1

7

AFHTTPRequestOperationsは単なる標準なのでNSOperations、サンプルプロジェクトを作成し、この問題を解決する方法を考え出しました。

NSOperationQueue'smaxConcurrentOperationCountが1に設定されている場合、 ' NSOperationsとキュー内completionBlockの次の'sは同時に実行されます。NSOperation

ただし、NSOperationを呼び出すことによってすべてが前の操作にリンクされている場合addDependency:、操作の実行は前の操作completionBlockが終了するまで待機します。

したがって、NSOperationsを介してすべてをリンクしaddDependency:、操作が失敗した場合は、現在の操作の完了ブロック内の残りの操作をキャンセルします。

NSOperationsとそのcompletionBlocksは同時に実行されますか?も参照してください)

于 2014-03-04T12:37:50.237 に答える