请求同一个接口的数据,我现在是第一个请求成功后请求下一个,有没有其他更快的方法呢?网上说可以自定义几个串行队列,并发执行?求方法。谢谢
接口:
-(void)requestfilterData:(NSString *)item
{
NSString *urlStr = [NSString stringWithFormat:@"%@/api/product/filter/list?filtername=%@" ,SERVER_ADDRESS,item];
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
[request setHTTPMethod:@"GET"];
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if (connectionError) {
NSLog(@" good commet list recv data error");
}else
{
[self receivedfilterConditionsReturnJSON:data];
}
}];
}
-(void)receivedfilterConditionsReturnJSON:(NSData *)data
{
NSError *localError = nil;
id parsedObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&localError];
if (localError != nil) {
NSLog(@"sport train filter list JSON data error: %@", [localError description]);
return;
}
NSDictionary *recvDic = (NSDictionary *)parsedObject;
//接收商品评论数据
NSString *result = [recvDic objectForKey:@"result"];
if ([result isEqualToString:@"1"]) {
dispatch_async(dispatch_get_main_queue(), ^{
[self showItemController:recvDic];
});
}
}
需求:实在页面出现的时候,要根据参数分三次调用这个接口(服务端就是这么设计的,并不是一次返回了)。
谢邀。第一次被邀请 必须好好回答。
建议阅读同步与异步
看了下您的问题,但是总觉得你对同步和异步的理解有差(可能是我看错了),但是我建议首先阅读下这篇文章
NSURLConnection的使用
虽然讲的是如何使用,但是作者很好的诠释了同步和异步的区别,也有实际例子来阐述两者。
建议阅读-NSOperationQueue
有了同步与异步,那么解决这个问题还需要多线程和队列的知识,阅读下下面的链接
使用NSOperationQueue简化多线程开发和队列的优先级
楼主的问题解析
楼主可否思考下,如何将上面的两者结合下,运用于自己的程序中?
思路一:直接多线程执行...
这里我们使用上面我提到的[NSURLConnection的使用]的代码为例子,github地址:code source 请自己下载下来
//ViewController.m中的viewDidLoad
(void)viewDidLoad
{
[super viewDidLoad];
// [self fetchAppleHtml];
// [self fetchYahooData];
// [self fetchYahooData];
[self fetchYahooData2_GCD];
[self fetchYahooData2_GCD];//连续两次运行试一下,看下打印的信息
// [self httpGetWithParams];
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。