小编bro*_*nko的帖子

使用Objective-C块实现更好的异步控制流程

我正在使用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集成.由于异步调用可能有多个结果(成功/失败)并且没有返回值,因此它似乎不是理想的选择.

任何指针或想法将不胜感激.

design-patterns objective-c objective-c-blocks afnetworking

37
推荐指数
4
解决办法
1万
查看次数

ASP.NET MVC - 在没有Http /请求上下文的情况下生成路由

我希望能够从RouteCollection生成URL而无需访问HttpContext.查看RouteCollection的实现方式,所有方法都需要访问RequestContext才能获取虚拟路径.

我通过模拟HttpContext解决了这个问题,但这增加了对RhinoMocks的尴尬依赖,并不是一个合理的解决方案.我是否有其他选项可以在上下文之外生成Urls?

asp.net-mvc routing httpcontext

9
推荐指数
1
解决办法
1429
查看次数

如何在键中使用正斜杠设置环境变量

有没有办法在名称中使用斜杠导出环境变量,例如:

export /myapp/db/username=someval

这篇文章表明它应该是可能的,但我无法弄清楚这样做的有效语法.

背景:

我使用confd从模板和密钥库生成配置文件.典型的商店(consul,etcd)使用分层键,例如/myapp/db/username.我希望透明地允许在使用基于环境变量的提供程序和利用分层键的配置存储之间进行切换.

bash shell environment-variables confd

5
推荐指数
1
解决办法
2857
查看次数