在一些成功的HTTP请求之后,我想在回调中返回totalArray,但仅在所有请求成功之后。经过一些研究,我发现我应该以某种方式使用像中央调度或NSLock这样的东西,但我不知道如何使用它们。我怎么能这样做?
+ (void)httpRequestOnParameters:(NSURL*)url parametersArray:(NSArray*)parametersArray success:(Success)success failure:(Failure)failure {
NSMutableArray* totalArray = [NSMutableArray new];
for (NSDictionary* parameter in parametersArray) {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:[url absoluteString]
parameters:parameter
success:^(AFHTTPRequestOperation *operation, id responseObject) {
[totalArray addObject:responseObject];
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
}
success(totalArray);
}
答案 0 :(得分:1)
您可以尝试在第一次异步调用之前将计数器设置为0。然后在成功代码块中,递增计数器并放置一个if块,检查计数器何时达到所需的异步调用次数。
counter = 0;
numAsyncCalls = x;
array = [ ];
asyncCall {
mainCode: ...
success: counter ++;
array.push(callResult);
if (counter == numAsyncCalls){
''Execute desired code on
''populated array[]
}
}
这有意义吗?很抱歉,如果这篇文章看起来很混乱,我会在我的iPad上试用堆栈交换应用程序。