1. 程式人生 > >GCD實現單個頁面多個網路請求,需要監聽所有網路請求結束後重新整理UI的處理

GCD實現單個頁面多個網路請求,需要監聽所有網路請求結束後重新整理UI的處理

dispatch_group_t group = dispatch_group_create();
    dispatch_queue_t serialQueue = dispatch_queue_create("com.tikeyc.tikeyc", DISPATCH_QUEUE_SERIAL);
    dispatch_group_enter(group);
    dispatch_group_async(group, serialQueue, ^{
        // 網路請求一
        [TServiceTool GET:@"" parameters:@"" progress:^(NSProgress * _Nonnull downloadProgress) {
            
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            dispatch_group_leave(group);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            dispatch_group_leave(group);
        }];
        
    });
    dispatch_group_enter(group);
    dispatch_group_async(group, serialQueue, ^{
        // 網路請求二
        [TServiceTool GET:@"" parameters:@"" progress:^(NSProgress * _Nonnull downloadProgress) {
            
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            dispatch_group_leave(group);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            dispatch_group_leave(group);
        }];
    });
    dispatch_group_enter(group);
    dispatch_group_async(group, serialQueue, ^{
        // 網路請求三
        [TServiceTool GET:@"" parameters:@"" progress:^(NSProgress * _Nonnull downloadProgress) {
            
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            dispatch_group_leave(group);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            dispatch_group_leave(group);
        }];
    });
    
    // 所有網路請求結束後會來到這個方法
    dispatch_group_notify(group, serialQueue, ^{
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            dispatch_async(dispatch_get_main_queue(), ^{
                // 重新整理UI
            });
        });
    });