美文网首页
关于网络请求的方法

关于网络请求的方法

作者: 程序猿界的cai渣渣 | 来源:发表于2017-09-19 15:30 被阅读15次
1、顺序请求数据

在开发中,数据请求可能需要进行逐步逐个进行。需要用到NSOperationQueue。具体如下:

NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{
    //默认创建的信号为0
    dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
    //这里是请求的方法(自定义或者AFN)
    [[ZSKNNetworking shareInstance] requestDataWithBusCode:@"" TransactionID:@"" 
TimeStamp:@"" ReqInfo:productLabelReqInfo type:(HttpRequestTypeGet) 
success:^(id responseObject) {       
            //这里请求成功信号量 +1 为1
            dispatch_semaphore_signal(semaphore);
        } failure:^(NSError *error) {
            //这里请求成功信号量 +1 为1
            dispatch_semaphore_signal(semaphore);
        }];
}];

NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{
    //默认创建的信号为0
    dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
    //这里是请求的方法(自定义或者AFN)
    [[ZSKNNetworking shareInstance] requestDataWithBusCode:@"" TransactionID:@"" 
TimeStamp:@"" ReqInfo:productLabelReqInfo type:(HttpRequestTypeGet) 
success:^(id responseObject) {
            //这里请求成功信号量 +1 为1
            dispatch_semaphore_signal(semaphore);
        } failure:^(NSError *error) {
            //这里请求成功信号量 +1 为1
            dispatch_semaphore_signal(semaphore);
        }];
}];

NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{
    //默认创建的信号为0
    dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
    //这里是请求的方法(自定义或者AFN)
    [[ZSKNNetworking shareInstance] requestDataWithBusCode:@"" TransactionID:@"" 
TimeStamp:@"" ReqInfo:productLabelReqInfo type:(HttpRequestTypeGet) 
success:^(id responseObject) {
            //这里请求成功信号量 +1 为1
            dispatch_semaphore_signal(semaphore);
        } failure:^(NSError *error) {
            //这里请求成功信号量 +1 为1
            dispatch_semaphore_signal(semaphore);
        }];
}];    
//这是顺序执行方法
[operation2 addDependency:operation1];
[operation3 addDependency:operation2];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//放入到队列中
[queue addOperations:@[operation1, operation2, operation3] waitUntilFinished:NO];
//添加关于信号量的监听通知
[queue addObserver:self forKeyPath:@"operationCount" options:0 context:nil];
以上是在方法中的内容。

//添加监听(数据请求)
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
    
    if ([keyPath isEqualToString:@"operationCount"]) {
        NSOperationQueue *queue = (NSOperationQueue *)object;
        if (queue.operationCount == 0) {
            NSLog(@"全部完成");
        }
    }
}

相关文章

  • 关于网络请求的方法

    1、顺序请求数据 在开发中,数据请求可能需要进行逐步逐个进行。需要用到NSOperationQueue。具体如下:

  • Retrofit 基础篇

    一、Retrofit 网络请求接口的注解类型:网络请求方法、标记类、网络请求参数 (1)网络请求方法 (2)标记类...

  • iOS开发·网络请求方法总结复习(下)

    iOS开发·网络请求方法总结复习(下) iOS开发·网络请求方法总结复习(下)

  • AFNetWorking 3.0 再封装

    1.网络请求的实例方法 /***网络请求的实例方法**@param typeget / post*@param u...

  • Redux-学习经验

    进行网络请求 发起网络请求的操作通常放在组件的componentDidMount方法中,使用redux进行网络请求...

  • React学习补充

    React 网络请求 方法一 原生请求,react自带的fetch请求方式: 方法二 ajax请求,react通过...

  • Retrofit注解学习

    retrofit的注解一共3种类型,分别为网络请求方法注解,标记类注解和网络请求参数注解 网络请求方法注解@GET...

  • iOS 开发笔记

    目录 网络请求POST方法GET方法 页面加载

    网络请求

    POST方法 需要借...

  • 关于网络请求

    每次用AFN的时候,总觉得有比较好用的,建立一个单例,建立mananger,抽取出baseURL就可以可以了.封装...

  • AFNetworking源码解析

    AFNetworking 网络请求使用 天气网络请求 从初始化AFHTTPSessionManager方法得到以下...

网友评论

      本文标题:关于网络请求的方法

      本文链接:https://www.haomeiwen.com/subject/tiwwsxtx.html