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);

  • 相关阅读:
    Java GC系列(2):Java垃圾回收是如何工作的?
    BZOJ 2878 【NOI2012】 迷失游乐园
    BZOJ 2876 【NOI2012】 骑行川藏
    UOJ #126 【NOI2013】 快餐店
    BZOJ 3122 【SDOI2013】 随机数生成器
    BZOJ 1833 【ZJOI2010】 数字计数
    BZOJ 1269 【AHOI2006】 文本编辑器
    BZOJ 3930 【CQOI2015】 选数
    BZOJ 4569 【SCOI2016】 萌萌哒
    BZOJ 2756 【SCOI2012】 奇怪的游戏
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/10755303.html
Copyright © 2011-2022 走看看