使用NSURLConnection
发出的HTTP请求是事件驱动的。当你需要一个接一个地发出三个请求时,这会让事情变得有些奇怪,其中每个请求都使用前一个请求返回的信息。
我习惯这样做:
response1 = request1();
response2 = request2(response1);
response3 = request3(response2);
但我能找到如何使用NSURLConnection
执行此操作的唯一方法是让connectionDidFinishLoading:
发出下一个请求。但是当顺序请求数量增加时,这可能会变得混乱。
使用cocoa处理顺序HTTP请求的惯用方法是什么?
答案 0 :(得分:7)
您可以将请求包装在NSOperation中,然后定义操作依赖项,以便每个请求在执行之前必须等待其相关请求。
来自Apple Docs:
依赖关系是以特定顺序执行操作的便捷方式。您可以使用addDependency:和removeDependency:方法为操作添加和删除依赖项。默认情况下,具有依赖关系的操作对象在其所有依赖操作对象完成执行之前不会被视为就绪。但是,一旦最后一个相关操作完成,操作对象就会准备好并能够执行。
答案 1 :(得分:0)
我建议您使用名为 MKNetworkKit 的第三方库。它可以为您处理艰苦的工作,因此您可以专注于应用程序的关键方面。你可以找到它here。
答案 2 :(得分:0)
您可以而且应该使用NSOperation
和NSOperationQueues
。
可在此处找到一个好的教程:How To Use NSOperations And NSOperationQueues