zoukankan      html  css  js  c++  java
  • AFNetWorking同步请求

        dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); //创建信号量
        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
        manager.requestSerializer.timeoutInterval = 5;
        manager.completionQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        //如果之前请求有值,则异步就好,不然会卡主线程
        if([OverallModel shareOverallModel].nSystemParameter){
            dispatch_semaphore_signal(semaphore);
        }
        [manager GET:[AppURLRequest getSystemVekey] parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSDictionary *responseObject) {
            
             dispatch_semaphore_signal(semaphore);//不管请求状态是什么,都得发送信号,否则会一直卡着进程
             NSInteger result = [[NSString stringWithFormat:@"%@",[responseObject objectForKey:@"result"]]integerValue];
            if(result == 1){
                NSString *nSystemParameter = NSZL(responseObject[@"data"][@"nSystemParameter"]);
                NSString *QQInfo = NSZL(responseObject[@"data"][@"QQInfo"]);
                [OverallModel shareOverallModel].nSystemParameter = nSystemParameter;
                [OverallModel shareOverallModel].QQInfo = QQInfo;
            }
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            dispatch_semaphore_signal(semaphore);//不管请求状态是什么,都得发送信号,否则会一直卡着进程
        }];
        
        dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);  //等待
    

     如果是在异步线程请求,则去掉 manager.completionQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

  • 相关阅读:
    Alpha冲刺(4/6)
    Alpha冲刺(3/6)
    Alpha冲刺(2/6)
    Alpha冲刺(1/6)
    团队Git现场编程实战
    团队项目-需求分析报告
    团队项目-选题报告
    第二次结对编程作业
    第一次团队展示
    第一次结对编程作业
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/10755303.html
Copyright © 2011-2022 走看看