AFNetworking 和批处理/串行操作
Posted
技术标签:
【中文标题】AFNetworking 和批处理/串行操作【英文标题】:AFNetworking and Batched/Serial Operations 【发布时间】:2012-12-29 08:27:03 【问题描述】:我正在尝试使用AFNetworking
进行一系列网络操作。例如:
[SomeApiICreated doNetworkingStuff success:^(NSString *message)
NSLog(@"Yay!");
failure:^(NSError *error)
NSLog(@"Oh noes!");
];
现在在 doNetworkingStuff 中,我想做多个网络任务。例如
-
获取应用令牌
if (
appTokenGot
) step3 else callFailure
使用应用令牌获取内容列表
if (listGot
) step5 else callFailure
等
但我还想打电话给doNetworkingStuff2
,它只执行第 3 步及以上步骤,基本上让我在需要时将操作排队,混合和匹配它们等。但所有这些都是我的一个主要调用可以说“是的,这行得通”或“有问题”
NSOperationQueue
是正确的,还是“如果这样,那么这样”的嵌套函数阻止了最好的方法?
任何示例也会有所帮助。
【问题讨论】:
【参考方案1】:为什么不直接调用其他函数从成功/失败块中传递数据。例如,我在 App.net API 中使用了类似的东西。
[[KSADNAPIClient sharedAPI] postPath:@"stream/0/posts"
parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject)
[[KSPostsController sharedController] addPosts:responseObject];
failure:^(AFHTTPRequestOperation *operation, NSError *error)
if (block)
block([NSArray array], error);
];
这样我就不会在成功和失败块中堆积大量逻辑。
【讨论】:
【参考方案2】:AFAIK,最好的方法是使用完成回调来执行连续调用。请记住,您需要响应对象来执行后续步骤,因此您将在成功回调中接收此对象。
【讨论】:
以上是关于AFNetworking 和批处理/串行操作的主要内容,如果未能解决你的问题,请参考以下文章