使用
发送少量帖子请求- (AFHTTPRequestOperation *)POST:(NSString *)URLString
parameters:(id)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
我想在处理完所有上述请求后执行一个get请求,因此我创建了AFHTTPRequestOperation
并将依赖项添加为
for (AFHTTPRequestOperation *operation in manager.operationQueue.operations ) {
[AFHTTPRequestOperationObject addDependency:operation];
}
[manager.operationQueue addOperation: AFHTTPRequestOperationObject];
但是操作是在完成现有的post请求之前执行的。
答案 0 :(得分:1)
您不应该使用NSOperation
依赖项来解决此问题。在您的情况下,以后的操作依赖于使用completionBlock
进行处理,但NSOperationQueue
和AFNetworking都认为该工作是副作用。
completionBlock
是:
在操作主要任务完成后执行的块。
(我的重点)。
在AFHTTPRequestOperation
的情况下,"操作的主要任务"是"发出HTTP请求"。 "主要任务" 不包括解析JSON,持久化数据,检查HTTP状态代码等等 - 这些都在completionBlock
处理。
要在处理完其他请求后执行一项请求,您需要在完成处理程序中提出该请求,一旦您确认已拥有需要继续执行的所有数据。
答案 1 :(得分:0)
使用ValueFound = TableCollection(RangeHeader.Text)
时,没有必要以与请求相同的顺序接收回复。您必须确保在完成多个extension=pdo.dll
extension=pdo_mysql.dll
请求后发出OperationQueues
请求。 This解释了使用completionHandler串行执行操作的过程(在您的情况下,应该是GET
请求完成后要执行的POST
请求。)
答案 2 :(得分:0)
AFHTTPRequestOperation似乎在HTTP调用完成后立即完成并返回。在这些操作完成后调用成功和失败块。因此,如果您有NSOperation A依赖于B,这是一个AFHTTPRequestOperation,那么您可能会看到B run,然后是A,接着是B的成功块。如果你创建一个"完成"操作并使A依赖它。然后让B排队"完成" B调用其成功或失败块时的运行操作。 "完成"操作有效信号A B完成了你想做的所有事情。