Dav*_*her 7 google-app-engine ios google-cloud-endpoints
我想这对Google来说真的是一个功能请求,但我很好奇是否有人知道一个解决方法.我想对GAE端点api 执行同步查询请求.
在Android中执行请求是同步的.然后将其放入AsyncTask中以使其在后台运行.
在iOS中,执行请求是异步的.你只需传入一个回调块.
我正在将Android应用程序转换为iOS应用程序,如果他们使用相同的机制,那将非常好.例如,有时我想要同步查询.它只是使我的代码更容易,我知道把它放在后台线程上.
所以我的问题是这个......在iOS查询完成之前,有什么办法(hacky或者没有)阻止?
您可以使用与此类似的代码等待调用完成并设置超时。显然您不想在 UI 线程上执行此操作,但这将确保您的完成处理程序串行运行。
NSLog(@"Before API Call");
GTLServiceTicket *apiCall = [apiService executeQuery:query completionHandler:^(GTLServiceTicket *ticket,
GTLHelloworldHelloGreeting *object,
NSError *error) {
NSLog(@"Starting completion handler");
NSArray *greetings = [NSArray arrayWithObjects: object, nil];
greetingsRetrievedFromAPI = greetings;
[self performSegueWithIdentifier: @"DisplayGreetings" sender: self];
NSLog(@"Ending completion handler");
}];
[apiService waitForTicket:apiCall timeout:100000 fetchedObject:nil error:nil];
NSLog(@"After completion handler");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |