我的应用程序从Flickr上的用户下载大量信息和图像,并使用AFHttpClient。所以基本上,每个人都会异步执行实际上是NSUrlConnection
,然后运行完成块。一个类对每个api调用都有方法,另一个类通过api调用循环来获取每个用户的数据,并将其放入核心数据。然而,我的问题是,我无法找到调用api类的类来确定何时完成所有下载并将其放入核心数据的方法。另外,我将同时下载多个用户数据,并根据用户的不同,完成不同顺序的加载。有什么建议么?检查多个异步网络操作何时完成
0
A
回答
0
使用实例变量记录正在进行的活动请求的数量。这可能是一个简单的NSInteger,它可以递增或递减,或者它可以是一个字典,用户名键入,如果需要,可以保存一些或更多详细的跟踪记录。这真的取决于你需要的细节水平。使API调用的类应该完成对这个记录数据的所有管理,并提供'count'方法。
1
AFNetworking说得很简单,管理多个请求,并最终回调,中庸之道使用:
- (void)enqueueBatchOfHTTPRequestOperations:(NSArray *)operations
progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock
completionBlock:(void (^)(NSArray *operations))completionBlock;
或
- (void)enqueueBatchOfHTTPRequestOperationsWithRequests:(NSArray *)urlRequests
progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock
completionBlock:(void (^)(NSArray *operations))completionBlock;
上AFHHTPClient实例。
例:
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@""]];
NSURLRequest *otherRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@""]];
AFHTTPRequestOperation *operationForImages = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operationForImages setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//success of images request
self.imageDictionary = responseObject;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//manage error for this request
}];
AFHTTPRequestOperation *operationForText = [[AFHTTPRequestOperation alloc] initWithRequest:otherRequest];
[operationForText setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//success of text request
self.textDictionary = responseObject;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//manage error for this request
}];
[[MyPersonalAFHTTPClient sharedClient] enqueueBatchOfHTTPRequestOperations:@[operationForImages,operationForText] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {
//track progression of requests
} completionBlock:^(NSArray *operations) {
//all the request are completed
}];
相关问题
- 1. 如何检查多个异步操作是否已完成?
- 2. 当异步操作同步完成时?
- 3. 如何等待多个异步操作完成
- 4. 为多个异步网络客户端操作提升asio
- 5. 使用RACCommand与异步网络操作
- 6. 查找涉及异步操作的递归完成时
- 7. 检测异步连接何时完成
- 8. 角度异步操作完成
- 9. 等待完成异步操作
- 10. asio - 等待异步操作完成
- 11. 等待异步操作完成
- 12. 等功能与异步操作完成
- 13. 等待异步操作完成android
- 14. python gio等待异步操作完成
- 15. C#等待异步操作完成
- 16. 异步网络接口状态检查
- 17. Rx多个异步操作
- 18. 异步操作vs异步网络任务?
- 19. 如何检查两个异步任务是否成功完成
- 20. jQuery:如何检查以确保所有的异步操作已完成
- 21. 如何等待某些操作完成时调用异步API
- 22. 进行多个异步调用并在完成时执行某些操作
- 23. 等待多个异步任务完成
- 24. 等待多个异步调用完成?
- 25. 如何在Android服务中异步任务网络操作?
- 26. 任务“尚未计算”:在异步操作仍未完成时完成的异步模块或处理程序
- 27. 错误:异步模块或处理程序在异步操作仍未完成时完成
- 28. 异步操作完成后运行一个函数
- 29. 套接字异步操作是否会同步完成?
- 30. 为什么在异步操作完成之前不会执行同步操作?
是你能找到任何解决办法?请张贴一些。 – Meet