zoukankan      html  css  js  c++  java
  • iOS 使用局部block处理接口依次调用需求

    开发中接口偶尔也会遇到接口数据依赖的问题,比如接口二需要接口一返回的某个回参作为入参才能请求,这时就需要等接口一请求完成在去调用接口二。一般都是使用信号量、GCD等。

    遇到这种问题博主一般都是使用信号量。如下发

    __block dispatch_group_t group = dispatch_group_create();
    dispatch_group_enter(group);
    NSDictionary *arguments = @{@"type":@(1)};
    [Network JSON_POST:arguments view:self.view prefix:@"" funItem:@"" success:^(NSDictionary * _Nonnull response){
        dispatch_group_leave(group);
    } error:^(NSDictionary * _Nonnull response) {
    } failure:^{
    }];
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        
    });
    

    或者使用下面的嵌套地狱,优点是很直观的解决了问题,缺点是如果只有两层嵌套还好,当多的时候能让人看的头皮发麻,后期维护麻烦还容易被喷。

    //接口一
    [Network requestData:^{
       //接口二
       [Network requestData2:^{
       } error:^{
           !error ?: error();
       }];
    } error:^{
       !error ?: error();
    }];
    

    然后想到了局部的block,block是可以写在方法内的,同时block看着更直白,方便。

    - (void)viewDidLoad {
        [super viewDidLoad];
        void (^requestData3)(NSString *value) = ^(NSString *value){
           // 接口3
           [Network request:@{@"data3":value} success::^{
               //三个接口依次请求完成
               success();
           } failure:^{
               failure();
           }];
        };
    
    
        void (^requestData2)(NSString *value) = ^(NSString *value){
           // 接口2
           [Network request:@{@"data2":value} success::^{
               // 所有接口请求成功
               requestData3(@"调用data3");
           } failure:^{
               failure();
           }];
        };
        [Network request:@{@"data1":@"a"} success:^{
           // 接口1
          requestData2(@"调用data2");
    
        } failure:^{
           failure();
        }];
    }
    
  • 相关阅读:
    python基础教程学习笔记十五
    使用win32imageinstall安装ubuntu
    python基础教程学习笔记十四
    python基础教程学习笔记十二
    ztpto图片轮播
    jQuery 获取屏幕高度、宽度
    h5新属性,可编辑的段落 contenteditable=“true”
    奋斗的奴隶博客中的牛逼js小测试
    ps4将图片弄成透明图片
    图片轮播,纯js+css
  • 原文地址:https://www.cnblogs.com/huanghaipo/p/14587588.html
Copyright © 2011-2022 走看看