我正在使用AFNetworking对 Web 服务进行异步调用。其中一些调用必须链接在一起,其中调用 A 的结果由调用 B 使用,调用 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];
这会导致嵌套的异步调用块很快变得不可读。当任务不相互依赖而必须并行执行并且执行取决于所有操作的结果时,情况会更加复杂。
似乎更好的方法是利用Promise框架来清理控制流。
我遇到了MAFuture,但不知道如何最好地将它与 AFNetworking 集成。由于异步调用可能有多个结果(成功/失败)并且没有返回值,因此它似乎不是一个理想的选择。
任何指针或想法将不胜感激。