我正在使用AFNetworking来异步调用Web服务.这些呼叫中的一些必须链接在一起,其中呼叫A的结果由呼叫B使用,其由呼叫C使用,等等.
AFNetworking处理异步调用的结果,并在创建操作时设置成功/失败块:
NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"Public Timeline: %@", JSON);
} failure:nil];
[operation start];
Run Code Online (Sandbox Code Playgroud)
这会导致嵌套的异步调用块很快变得不可读.当任务不依赖于彼此而是必须并行执行并且执行取决于所有操作的结果时,它甚至更复杂.
似乎更好的方法是利用promises框架来清理控制流.
我遇到过MAFuture,但无法弄清楚如何最好地将它与AFNetworking集成.由于异步调用可能有多个结果(成功/失败)并且没有返回值,因此它似乎不是理想的选择.
任何指针或想法将不胜感激.
我希望能够从RouteCollection生成URL而无需访问HttpContext.查看RouteCollection的实现方式,所有方法都需要访问RequestContext才能获取虚拟路径.
我通过模拟HttpContext解决了这个问题,但这增加了对RhinoMocks的尴尬依赖,并不是一个合理的解决方案.我是否有其他选项可以在上下文之外生成Urls?
afnetworking ×1
asp.net-mvc ×1
bash ×1
confd ×1
httpcontext ×1
objective-c ×1
routing ×1
shell ×1