在iOS上对Google Cloud Endpoints执行同步查询

Dav*_*her 7 google-app-engine ios google-cloud-endpoints

我想这对Google来说真的是一个功能请求,但我很好奇是否有人知道一个解决方法.我想对GAE端点api 执行同步查询请求.

在Android中执行请求是同步的.然后将其放入AsyncTask中以使其在后台运行.

在iOS中,执行请求是异步的.你只需传入一个回调块.

我正在将Android应用程序转换为iOS应用程序,如果他们使用相同的机制,那将非常好.例如,有时我想要同步查询.它只是使我的代码更容易,我知道把它放在后台线程上.

所以我的问题是这个......在iOS查询完成之前,有什么办法(hacky或者没有)阻止?

Pau*_*ulR 4

您可以使用与此类似的代码等待调用完成并设置超时。显然您不想在 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)