我有几个异步调用,我会在一个调用中合并:
-(void) loadA:(ArrayBlock)completion failure(FailureBlock):failure;
-(void) loadB:(ArrayBlock)completion failure(FailureBlock):failure;
-(void) loadC:(ArrayBlock)completion failure(FailureBlock):failure;
使用上述调用的组合方法:
- (void) loadAll:(ObjectBlock)completion;
完成块包含一个具有三个数组的对象,称为array[A-C]
. 如果任何子调用失败,则对象中的相应数组被简单地设置为 nil。
而不是嵌套这三个块并在前面的失败或完成时调用下一个(这真的很混乱) - 我想使用 GCD 执行以下操作:
- 将所有呼叫添加到队列
- 等到所有调用完成(调用成功或失败块)
- 合并完成块的所有结果并调用方法的完成块
loadAll
。
我知道这在具有同步调用的 GCD 中是可能的,但我不知道如何通过我的三个异步“子调用”来实现这一点。