业务VC.m
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue = dispatch_queue_create("testQueue", DISPATCH_QUEUE_CONCURRENT);
// 请求第一个接口
dispatch_group_async(group, queue, ^{
[NetWorkBusiness fetchData1WithCallback:^(BOOL success, NetworkingReturnState state, NSArray* _Nonnull datas) {
// do something
}];
});
dispatch_barrier_async(queue, ^{
});
// 请求第二个接口
dispatch_group_async(group, queue, ^{
[NetWorkBusiness fetchData2WithCallback:^(BOOL success, NetworkingReturnState state, NSArray* _Nonnull datas) {
// do something
}];
});
dispatch_barrier_async(queue, ^{
});
// 请求第三个接口
dispatch_group_async(group, queue, ^{
[NetWorkBusiness fetchData3WithCallback:^(BOOL success, NetworkingReturnState state, NSArray* _Nonnull datas) {
// do something
}];
});
dispatch_barrier_async(queue, ^{
});
// 请求第四个接口
dispatch_group_async(group, queue, ^{
[NetWorkBusiness fetchData4WithCallback:^(BOOL success, NetworkingReturnState state, NSArray* _Nonnull datas) {
// do something
}];
});
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
// do something
});
封装的请求接口中如下:
fetchData1,fetchData2,fetchData3,fetchData4 保持一致
+ (void)fetchData1WithCallback:(nonnull void (^)(BOOL, NetworkingReturnState, NSArray*))callback {
+ // 创建信号量
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
[NetworkingLogic accessWithType:YmdAccessTypeGET subUrl:subUrl params:params callback:^(NetworkingReturnState state, id _Nonnull data) {
if (state == NetworkingReturnStateOK) {
// 发送信号
dispatch_semaphore_signal(sema);
callback(true, state, data);
}else {
// 发送信号
dispatch_semaphore_signal(sema);
callback(false, state, nil);
}
}];
// 释放信号
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
}