美文网首页iOS Developer
iOS异步网络请求需要等待其返回数据,才能执行下一步操作

iOS异步网络请求需要等待其返回数据,才能执行下一步操作

作者: LeeCen | 来源:发表于2017-06-09 17:43 被阅读441次
    项目中有个需求:点击下一步时,根据网络请求返回的值,来判断是否能让用户继续操作(跳转)
    • 需要等异步网络请求完成之后返回值,才再执行下一步代码,可以使用以下方法
      • 1 、下面两个行代码需要成对存在,否则无效!
        • 第一行代码写在请求之前
        • 第二行代码写在请求完成之后返回值的里面
        dispatch_group_enter
        dispatch_group_leave
    
    • 2、notify 等所有任务执行完毕时再执行。
      • 最后把等待网络请求完成之后才执行的代码写在 dispatch_group_notify 里面
        dispatch_group_notify
    
    • 例:
        dispatch_group_t group = dispatch_group_create();
    
        dispatch_group_enter(group);
    
        NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.baidu.com"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            NSLog(@"请求 1 的值");
            
            dispatch_group_leave(group);
        }];
        [task resume];
    
    
        dispatch_group_enter(group);
        
        NSURLSessionDataTask *task2 = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.baidu.com"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            NSLog(@"请求 2 的值");
            
            dispatch_group_leave(group);
        }];
        [task2 resume];
    
    
        dispatch_group_notify(group, dispatch_get_main_queue(), ^(){
            NSLog(@"等待执行");
        });
    
    image.png

    来着 stackoverflow

    相关文章

      网友评论

        本文标题:iOS异步网络请求需要等待其返回数据,才能执行下一步操作

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