异步环境中的同步调用

时间:2015-06-25 13:02:07

标签: ios objective-c asynchronous afnetworking-2 synchronous

我使用AFNetworking 2.0和Objective-C创建一个类,它将客户端数据库与服务器上的数据库同步。 当然,客户端在发生这种情况时不应该注意到,因此类必须使调用异步。 但是,此类中的某些调用取决于其他调用的结果。

示例:

  • 对象:哺乳动物,id = 15,新id = 26
  • 子对象:Zebra,clade_id = 15

一旦哺乳动物完成,斑马只能更新其属性,因为它使用了一些哺乳动物属性(id),如果它过早发送呼叫,则会导致数据损坏(id = 15而不是正确的26)

我的问题是,如何使用AFNetworking以用户不注意(异步)的方式进行这些同步调用(哺乳动物完成后的斑马)。

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

您无需使用同步通话。

1)第一种方式

// create request with URL
NSMutableURLRequest *request = ....;

// create AFHTTPRequestOperation
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperationManager manager] HTTPRequestOperationWithRequest:request success:^{success block} failure:^{failure block}];

// Call operation
[self.operationQueue addOperation:operation];

在成功阻止中安排第二次操作。

2)第二种方式
立即创建两个操作,并将第一个操作设置为第二个操作的依赖关系(但需要额外的代码来管理共享数据)。

[operation2 addDependency:operation1]; 
[self.operationQueue addOperation:operation1];
[self.operationQueue addOperation:operation2];