text 从异步接口获取变量同步返回#async

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text 从异步接口获取变量同步返回#async相关的知识,希望对你有一定的参考价值。

// !!!学习该方法,如何从异步任务中,进行同步获取,利用信号量
- (NSArray *)tasksForKeyPath:(NSString *)keyPath {
    __block NSArray *tasks = nil;
    dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
    [self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
        if ([keyPath isEqualToString:NSStringFromSelector(@selector(dataTasks))]) {
            tasks = dataTasks;
        } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(uploadTasks))]) {
            tasks = uploadTasks;
        } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(downloadTasks))]) {
            tasks = downloadTasks;
        } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(tasks))]) {
            tasks = [@[dataTasks, uploadTasks, downloadTasks] valueForKeyPath:@"@unionOfArrays.self"];
        }

        dispatch_semaphore_signal(semaphore);
    }];

    dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);

    return tasks;
}

以上是关于text 从异步接口获取变量同步返回#async的主要内容,如果未能解决你的问题,请参考以下文章

java CountDownLatch 控制异步和同步

如何用Verilog设计一个异步清0、同步时钟使能和异步数据加载型8位二进制家法计数器?

Spring Boot中调用@Async注解的异步方法并获取返回值

Spring Boot中调用@Async注解的异步方法并获取返回值

Spring Boot中调用@Async注解的异步方法并获取返回值

Spring Boot中调用@Async注解的异步方法并获取返回值