美文网首页
iOS 等待异步操作后 return 值

iOS 等待异步操作后 return 值

作者: 30213be71330 | 来源:发表于2019-10-15 09:01 被阅读0次

需求是:一个函数 等AFNetwork 网络 请求完成后,修改返回值,并继续执行函数,并返回值.

- (BOOL)Action_alertAgreement
{
    
    dispatch_semaphore_t signal = dispatch_semaphore_create(0);

    __block BOOL returnValue = NO;
    HWHttpRequestOperationManager *httpManager = [HWHttpRequestOperationManager baseManager];
    httpManager.completionQueue = dispatch_get_global_queue(0, 0);
    [httpManager postHttpRequest:kGetOrgAgreementInfo parameters:nil queue:nil success:^(NSDictionary * _Nullable responseObject) {
            dispatch_async(dispatch_get_main_queue(), ^{
                [Utility_new showToastWithMessage:remark];
            });
            returnValue = NO;
        }
        dispatch_semaphore_signal(signal);

    } failure:^(NSString * _Nullable code, NSString * _Nullable error) {
        returnValue = NO;
        dispatch_semaphore_signal(signal);
    }];
    dispatch_semaphore_wait(signal, DISPATCH_TIME_FOREVER);
    return returnValue;
}

关键的一步是设置httpManager.completionQueue = dispatch_get_global_queue(0, 0);要不然会阻塞主线程.并且如果要在AFNetwork的回调中操作UI,要切换到主线程. HWHttpRequestOperationManager 是对AFNetwork的进一步封装,可以忽略.

相关文章

  • iOS 等待异步操作后 return 值

    需求是:一个函数 等AFNetwork 网络 请求完成后,修改返回值,并继续执行函数,并返回值. 关键的一步是设...

  • 无奈,无赖,谁来拯救你!

    1.在ios中很多操作在异步操作的时候需要等待,异步操作完成时候,我们有时候会这样处理: 当然采取同步的就不说了....

  • generator、async函数

    以同步的方式管理异步操作(暂停执行的作用),每调用一次返回一个状态,如果是异步操作,则会等待异步操作完成后,继续后...

  • [iOS][OC] 自定义 Promise 处理串行的异步操作

    背景 iOS 应用中很多操作是异步的,比如: 网络请求的回调 UIAlertController 等待用户点击事件...

  • Java8——异步编程

    Java8——异步编程 异步编程 所谓异步其实就是实现一个无需等待被调用函数的返回值而让操作继续运行的方法 创建任...

  • Swift 中的异步与并发

    异步 异步在 iOS 里是一个常见的操作,例如要在网络请求后更新数据模型和视图。但是当异步操作嵌套时,不仅容易出现...

  • 3. 异步编程

    异步编程和同步编程有什么区别? 同步在执行某个操作时,应用程序的主线程必须等待操作执行完成后才能继续执行。 异步在...

  • 如何解决if else嵌套问题

    1.提前判断return 比如空值if(...){}else{break;}改造后if(...){return;...

  • return;debug。

    python def函数 没有return/return后没有参数,则返回None值 return跳出函数窗口,执...

  • Perl return操作符

    6. return 操作符 return 函数在子程序,块或do函数的末尾返回某个值,返回值可以是标量,数组或哈希...

网友评论

      本文标题:iOS 等待异步操作后 return 值

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