美文网首页Swift
oc和swift的DispatchGroupNotify

oc和swift的DispatchGroupNotify

作者: SeanLink | 来源:发表于2021-10-28 17:36 被阅读0次

    话不多说,直接上代码吧

    OC版本

    - (void)requestDatasGroup {
        // 创建调度组
        dispatch_group_t group = dispatch_group_create();
        // 创建队列
        dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
    
        // 模拟异步发送网络请求 A
        // 入组
        dispatch_group_enter(group);
        dispatch_async(queue, ^{
            [NSThread sleepForTimeInterval:1.0];
            NSLog(@"接口 A 数据请求完成");
            // 出组
            dispatch_group_leave(group);
        });
        
        // 模拟异步发送网络请求 B
        // 入组
        dispatch_group_enter(group);
        dispatch_async(queue, ^{
            [NSThread sleepForTimeInterval:1.0];
            NSLog(@"接口 B 数据请求完成");
            // 出组
            dispatch_group_leave(group);
        });
        
        NSLog(@"我是最开始执行的,异步操作里的打印是后执行的");
        
        // 调度组的任务都执行完毕
        dispatch_group_notify(group, dispatch_get_main_queue(), ^{
            NSLog(@"接口 A 和接口 B 的数据请求都已经完毕!, 开始合并两个接口的数据");
        });
    }
    

    swift版本

      /// 网络请求调度组
        private func datasRequestGroup() {
            // 创建调度组
            let workingGroup = DispatchGroup()
            // 创建多列
            let workingQueue = DispatchQueue(label: "request_queue")
            
            // 模拟异步发送网络请求 A
            // 入组
            workingGroup.enter()
            workingQueue.async {
                Thread.sleep(forTimeInterval: 1)
                print("接口 A 数据请求完成")
                // 出组
                workingGroup.leave()
            }
            
            // 模拟异步发送网络请求 B
            // 入组
            workingGroup.enter()
            workingQueue.async {
                Thread.sleep(forTimeInterval: 1)
                print("接口 B 数据请求完成")
                // 出组
                workingGroup.leave()
            }
            
            print("我是最开始执行的,异步操作里的打印后执行")
            
            // 调度组里的任务都执行完毕
            workingGroup.notify(queue: workingQueue) {
                print("接口 A 和接口 B 的数据请求都已经完毕!, 开始合并两个接口的数据")
            }
        }
    

    相关文章

      网友评论

        本文标题:oc和swift的DispatchGroupNotify

        本文链接:https://www.haomeiwen.com/subject/ujbvaltx.html