ios - NSOperationQueue 如何等待两个异步操作?

标签 ios nsoperationqueue

如何让 NSOperationQueue(或其他任何东西)等待两个带有回调的异步网络调用?流程需要看起来像这样

Block Begins {
    Network call with call back/block begins {
        first network call is done 
    }
}
Second Block Begins {
    Network call with call back/block begins {
        second network call is done 
    }
} 

Only run this block once the NETWORK CALLS are done {
    blah
}

这是我目前所拥有的。

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
__block NSString *var;


[queue addOperation:[NSBlockOperation blockOperationWithBlock:^{
   [AsyncReq get:^{
       code
    } onError:^(NSError *error) {
       code
    }];
}]];

[queue addOperation:[NSBlockOperation blockOperationWithBlock:^{
   [AsyncReq get:^{
       code
    } onError:^(NSError *error) {
       code
    }];
}]];
[queue waitUntilAllOperationsAreFinished];
//do something with both of the responses

最佳答案

你必须使用NSOperation Queue吗?以下是使用调度组执行此操作的方法:

dispatch_group_t group = dispatch_group_create();

dispatch_group_enter(group);
[AsyncReq get:^{
    code
    dispatch_group_leave(group); 
} onError:^(NSError *error) {
    code
    dispatch_group_leave(group);
}];


dispatch_group_enter(group);
[AsyncReq get:^{
    code
    dispatch_group_leave(group); 
} onError:^(NSError *error) {
    code
    dispatch_group_leave(group);
}];

dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    NSLog(@"Both operations completed!")
});

关于ios - NSOperationQueue 如何等待两个异步操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27259570/

相关文章:

objective-c - NSBlockOperation 的粒度状态

ios - 对 bindTo 的模糊引用

ios - 如何使用 Swift 在文本字段(从右到左)输入货币格式?

ios - 在 iOS 上的一个 UITableView 中加载两个不同的 Nib

ios - RightBarButtonItem 未显示在正确的位置

ios - 如何并发更新数组?

objective-c - 通过OperationQueue加载UIImageView的问题

ios - NSOperationQueue在完成 block 成功时添加新操作

ios - 分发配置文件未显示在代码签名身份下,但显示在帐户中

ios - 我可以在没有队列的情况下在另一个 NSOperation 内部启动一个 NSOperation 吗?