等待block完成再执行下一句代码
来源:互联网 发布:网络算命大师 编辑:程序博客网 时间:2024/04/29 02:25
我使用afnetworking发送一个post请求, 需要得到请求结果再执行下一步代码,现在我用过如下两种方式, 但都会造成程序卡住无法往下进行.但是我在另一个put请求用了相同的方法却可行, 哪位大神有了解过这种问题的?求解释
第一种: dispatch_semaphore_t
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];manager.requestSerializer = [AFJSONRequestSerializer serializer];__block dispatch_semaphore_t sem = dispatch_semaphore_create(0);[manager POST:@"http://172.16.100.85:8080/service/user/register" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { self.requestResult = ProtocolErrorSuccess; if ([responseObject isKindOfClass:[NSDictionary class]]) { self.responseData = responseObject; } dispatch_semaphore_signal(sem);} failure:^(AFHTTPRequestOperation *operation, NSError *error) { self.requestResult = ProtocolErrorFailure; dispatch_semaphore_signal(sem);}];dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);if(self.requestResult == ProtocolErrorSuccess) { [self saveToken:self.responseData];}
第二种: NSCondition
[manager POST:@"http://172.16.100.85:8080/service/user/register" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { self.requestResult = ProtocolErrorSuccess; if ([responseObject isKindOfClass:[NSDictionary class]]) { self.responseData = responseObject; } [condition lock]; [condition signal]; [condition unlock];} failure:^(AFHTTPRequestOperation *operation, NSError *error) { self.requestResult = ProtocolErrorFailure; [condition lock]; [condition signal]; [condition unlock];}];[condition lock];[condition wait];[condition unlock];if(self.requestResult == ProtocolErrorSuccess) { [self saveToken:self.responseData];}
0 0
- 等待block完成再执行下一句代码
- 一个等待Winexec执行完成后再继续执行后面代码的函数
- 执行并等待进程完成
- 执行命令行并等待完成
- 1.Block内部执行完才走后续的代码 2.多次请求完成才执行代码
- objective-c 等待多个异步函数完成后,再执行某段代码--GCD Group 的使用
- 主线程等待所有子线程完成后再执行
- 实现 java 执行 cmd 命令,打印输出,等待cmd 完全执行完成后才执行下面代码
- 实现 java 执行 cmd 命令,打印输出,等待cmd 完全执行完成后才执行下面代码 .
- Java执行外部程序,并等待完成
- DELPHI7执行dos命令并等待完成再执行面的语句
- Shell 脚本等待上一行执行完成再执行下一行的方法
- JAVA主线程等待所有子线程执行完成后主线程再执行
- 页面加载完成再执行js代码
- Java多线程执行,主程序等待其他线程执行完成
- iOS 等待异步线程结束再执行后续代码
- java线程池主线程等待子线程执行完成后再继续处理后面工作
- java线程池主线程等待子线程执行完成后再继续处理后面工作
- {A} + {B}
- 树莓派IoT 学习4 mosquitto实现mqtt通讯(1)
- 268. Missing Number
- 收集与WebService之间的点点滴滴
- IBM与法国银行合作,率先使用区块链技术管理客户身份并提高客户满意度
- 等待block完成再执行下一句代码
- 【网络基础】Mime Type
- python学习——生成器
- 【MyBatis框架】高级映射-延迟加载
- poj1463(树形DP)
- MySQL的安装配置和基本操作
- 5. Longest Palindromic Substring
- SQLiteOpenHelper学习笔记
- Irrlicht引擎学习笔记(12)--RenderToTexture