美文网首页
iOS异步回调

iOS异步回调

作者: AryCode | 来源:发表于2016-10-28 10:51 被阅读36次

需求

<ol>
<li>下载.mp3文件</li>
<li>下载歌词文件</li>
<li>播放音乐的同时显示歌词</li>
</ol>

这个需求里面下载歌词和.mp3文件是两个不同的异步的网络请求,需求3的需求是在完成1,2的前提下才可以完成

方案

<ol>
<li>使用dispatch_group_t</li>
</ol>

  • 歌词
group = dispatch_group_create();
dispatch_group_enter(group);
_manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration ephemeralSessionConfiguration]];
[_manager POST: lyric.url  parameters:newParm  progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject)
 {
          dispatch_group_leave(group);
 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
          // 提示下载失败
 }];

  • mp3文件
dispatch_group_enter(group);
_manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration ephemeralSessionConfiguration]];
[_manager POST: mp3.url  parameters:newParm  progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject)
 {
          dispatch_group_leave(group);
 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
          // 提示下载失败
 }];
  • 都下载完毕
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    // 开始播放
});

相关文章

  • iOS异步回调

    需求 下载.mp3文件 下载歌词文件 播放音乐的同时显示歌词 这个需求里面下载歌词和.mp3文件是两个不同的异...

  • 异步的实现

    异步的三种实现方式: 回调函数事件Promise 回调函数 回调函数不一定是异步 但是异步一定是回调函数。 事件 ...

  • iOS 控制异步回调

  • ios 异步回调选择

    异步调用,比较常用,比如网络请求等,都需要等别的模块处理完成后,我们这边再进行处理,然而外部什么时候能处理完是一个...

  • ios等待 异步回调

    项目中需求,需要发起一个异步网络请求,等待请求数据回来后才可以进行之后的操作。首先,定义一个BOOL类型的requ...

  • 同步、异步

    同步:等待结果异步:不等待结果 注意,异步常常伴随回调一起出现,但是异步不是回调,回调也不一定是异步。 【时序图】...

  • 异步和回调

    异步 异步就是「不等结果」,直接进行下一步怎么拿到结果回调可以拿到结果 回调 「回调是一种拿异步结果的方式」「回调...

  • 你不知道的JS(中卷)第七章

    第七章 回调 回调是js异步的基本单元。随着js越来越成熟,对于异步编程的发展,回调已经不够用了。回调表达异步流的...

  • Dart 语法

    回调 dart定义回调 dart使用回调 延时 异步

  • nodeJS回调函数

    NodeJS异步编程的直接体现就是回调函数。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。回调函...

网友评论

      本文标题:iOS异步回调

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