ios - 如何返回由一堆异步 HTTP 请求组合而成的对象数组?

标签 ios objective-c asynchronous afnetworking

在一些成功的 HTTP 请求之后,我想在回调中返回 totalArray,但只有在所有请求都成功之后。在做了一些研究之后,我发现我应该以某种方式使用 grand central dispatch 或 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 的计数器。然后在成功代码块中,增加计数器并放置一个 if block ,检查计数器何时达到所需的异步调用数量。

counter = 0;
numAsyncCalls = x;
array = [ ];

asyncCall {
   mainCode: ...
   success: counter ++;
                  array.push(callResult);
                  if (counter == numAsyncCalls){
                     ''Execute desired code on
                     ''populated array[]
                  }
 }

这有意义吗?抱歉,如果这篇文章看起来很简陋,我正在 iPad 上尝试堆栈交换应用程序。

关于ios - 如何返回由一堆异步 HTTP 请求组合而成的对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26789268/

相关文章:

c# - 显示隐藏的按钮

iphone - json 模式到 objective c - 模型类生成

php - 为什么对 Symfony Controller 的 jQuery AJAX 请求是并行处理的而不是异步的?

javascript - 如何等待一组异步回调函数?

javascript - 有没有一种很好的方法来 Promise.all 具有 promise 属性的对象数组?

ios - 如何自动初始化不同类的对象?

ios - 如何显示我的 cocoa touch 框架 Storyboard屏幕?

ios - 发送一批 http 请求时的天线使用情况

ios - Watchkit 中元素大小相对于屏幕大小

ios - 将 JSON 字符串解析为基于 iOS 类的对象