iOS异步回调

需求

<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(), ^{
    // 开始播放
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容