美文网首页
iOS 使用局部block处理接口依次调用需求

iOS 使用局部block处理接口依次调用需求

作者: 骑马纵天下 | 来源:发表于2021-03-28 00:23 被阅读0次

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

相关文章

  • iOS 使用局部block处理接口依次调用需求

    开发中接口偶尔也会遇到接口数据依赖的问题,比如接口二需要接口一返回的某个回参作为入参才能请求,这时就需要等接口一请...

  • Block

    Block内的变量: 一:局部变量 声明block之后,调用blcok之前,对局部变量进行修改,在调用block时...

  • __block的使用

    在声明Block之后、调用Block之前对局部变量进行修改,在调用Block时局部变量值是修改之前的旧值 在局部变...

  • [iOS]Block系列探究六 - __block变量和对象

    之前的文章[iOS]Block系列探究二 - 捕获变量谈论过__block是如何处理基础类型的局部变量使block...

  • iOS中的Block访问变量使用注意问题

    一、Block内访问局部变量 a、在声明block后,调用block之前对局部变量修改,block里面扑获的值仍是...

  • iOS 之 block(4.3)

    block 调用 局部变量 NSObject 时 总结:block 持有局部变量时,自定义block 内部有一个P...

  • iOS Block底层解析二

    一、__block 的解析 接上一篇《iOS Block底层解析一》,在block中我们要修改局部变量(自动局部变...

  • Objc Block实现分析

    Objc Block实现分析 Block在iOS开发中使用的频率是很高的,使用的场景包括接口异步数据的回调(AFN...

  • Block 的一些简单认识

    Block 与局部变量 block 可以捕获局部变量,在你声明 myBlock 后,因为需要在block 内使用了...

  • iOS Block存储域及循环引用

    系列文章:iOS Block概念、语法及基本使用iOS Block实现原理iOS Block __block说明符...

网友评论

      本文标题:iOS 使用局部block处理接口依次调用需求

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