您好我第一次使用Restkit并且能够正确调用Web服务但是有一种情况我必须在我的一个viewcontroller上调用两个webservices来获取服务器所需的所有数据 例如:我有一个服务提供userProfile数据,第二个我必须调用userLevelType
现在我正在调用第一个webservices,当我得到那些数据时,它给了我useprofile我叫第二个webservices userLevelType但是我想一次调用这两个服务
有没有办法一次调用两个不同的Web服务。
我正在使用RKobjectRequestOperation来调用webservices,因此可以创建一个我不知道的队列或其他解决方案
感谢您的帮助。
答案 0 :(得分:1)
您正在处理的异步系统正在攻击基于网络的资源。 "同时"实际上是不可能的。
RestKit
会按照您提供的顺序排队请求。
如果您的请求是顺序依赖的,您需要通过完成块将它们链接在一起。
RequestOperationSucessBlock successblock = ^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){
[self runNextRequestWhichIsDependantOnDataFromThisRequest];
};
RequestOperationFailBlock failureblock = ^(RKObjectRequestOperation *operation, NSError *error){
//deal with failure
};
[[RKObjectManager sharedManager] getObjectsAtPath:@"my/path" parameters:someParams success:successblock failure:failureblock];
如果它们不依赖,请在两个成功块中使用条件来继续前进。
RequestOperationSucessBlock successblock = ^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){
if(theOtherOperationHasCompleted) {
[self carryOnWithFlowNowThatBothOperationsAreDone];
}
};
答案 1 :(得分:0)
使用对象管理器控制您处理的请求操作。使用enqueueObjectRequestOperation:
将处理传递给对象管理器。访问对象管理器的operationQueue
,以便您可以调用setMaxConcurrentOperationCount:
来限制正在运行的并发进程数(您在任何时候都不应该超过4或5)。< / p>