您的当前位置:首页正文

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(), ^{
    // 开始播放
});