swift中的使用案例样式

// Mark: -数据源更新

typealias AddDataBlock = () ->Void

var updataBlock:AddDataBlock?

func loadLiveData(){

let grpup = DispatchGroup()

grpup.enter()

//        //首页直播接口请求

HomeLiveProvider.request(.liveList) { result in

if case let .success(response) = result {

//解析数据

let data = try? response.mapJSON()

let json = JSON(data!)

if let mappedObject = JSONDeserializer<HomeLiveModel>.deserializeFrom(json: json.description) { // 从字符串转换为对象实例

self.lives = mappedObject.data?.lives

self.categoryVoList = mappedObject.data?.categoryVoList

//                    self.collectionView.reloadData()

// 更新tableView数据

//                    self.updataBlock?()

grpup.leave()

}

}

}

grpup.enter()

//        //首页直播滚动图接口请求

HomeLiveProvider.request(.liveBannerList) { result in

if case let .success(response) = result {

//解析数据

let data = try? response.mapJSON()

let json = JSON(data!)

if let mappedObject = JSONDeserializer<HomeLiveBanerModel>.deserializeFrom(json: json.description) { // 从字符串转换为对象实例

self.homeLiveBanerList = mappedObject.data

//                    let index: IndexPath = IndexPath.init(row: 0, section: 1)

//                    self.collectionView.reloadItems(at: [index])

// 更新tableView数据

//                    self.updataBlock?()

grpup.leave()

}

}

}

grpup.enter()

//        //首页直播排行榜接口请求

HomeLiveProvider.request(.liveRankList) { result in

if case let .success(response) = result {

//解析数据

let data = try? response.mapJSON()

let json = JSON(data!)

if let mappedObject = JSONDeserializer<HomeLiveRankModel>.deserializeFrom(json: json.description) { // 从字符串转换为对象实例

self.multidimensionalRankVos = mappedObject.data?.multidimensionalRankVos

//                    let index: IndexPath = IndexPath.init(row: 0, section: 2)

//                    self.collectionView.reloadItems(at: [index])

// 更新tableView数据

//                    self.updataBlock?()

grpup.leave()

}

}

}

grpup.notify(queue: DispatchQueue.main) {

self.updataBlock?()

}

}

oc中的使用样式

//一个并发队列

dispatch_queue_t queueE = dispatch_queue_create("group.queue", DISPATCH_QUEUE_CONCURRENT);

//一个线程组

dispatch_group_t groupE = dispatch_group_create();

////1.请求轮播图的数据

dispatch_group_async(groupE, queueE, ^{

dispatch_group_enter(groupE);

dispatch_async(dispatch_get_global_queue(0, 0), ^{

[self requestCarousel:^{

dispatch_group_leave(groupE);

}];

});

});

////2.请求新闻轮播图的数据

dispatch_group_async(groupE, queueE, ^{

dispatch_group_enter(groupE);

dispatch_async(dispatch_get_global_queue(0, 0), ^{

[self requestNews:^{

dispatch_group_leave(groupE);

}];

});

});

////3.校园活动【师生展评】

dispatch_group_async(groupE, queueE, ^{

dispatch_group_enter(groupE);

dispatch_async(dispatch_get_global_queue(0, 0), ^{

//3.校园活动【师生展评】

[self requestCampAcitivetis:^{

dispatch_group_leave(groupE);

}];

});

});

////4.尾部视图

dispatch_group_async(groupE, queueE, ^{

dispatch_group_enter(groupE);

dispatch_async(dispatch_get_global_queue(0, 0), ^{

//3.尾部视图

[self requestClass:^{

dispatch_group_leave(groupE);

}];

});

});

dispatch_group_notify(groupE, dispatch_get_main_queue(), ^{

//staticWeakSelf 随情况而定

[staticWeakSelf setUpUI];

});

//1.请求轮播图的数据

- (void)requestCarousel:(void(^)(void))leveBlock{

  

[AFHTTPRequestManager reqesutSuccess{

    

  

  if (leveBlock) {

leveBlock();

}

  } requestFaliure{

    

  if (leveBlock) {

leveBlock();

}

  }

}

swift中利用系统线程实现异步加载数据同步更新UI的更多相关文章

  1. 在vue中使用Echarts画曲线图(异步加载数据)

    现实的工作中, 数据不可能写死的,所有的数据都应该通过发送请求进行获取. 所以本项目的需求是请求服务器获得二维数组,并生成曲线图.曲线图的横纵坐标均从获得的数据中取得. Echarts官方文档: ht ...

  2. 新手教程:不写JS,在MIP页中实现异步加载数据

    从需求谈起:在 MIP 页中异步加载数据 MIP(移动网页加速器) 的 加速原理 除了靠谱的 MIP-Cache CDN 加速外,最值得一提的就是组件系统.所有 JS 交互都需要使用 MIP 组件实现 ...

  3. HTML5中script的async属性异步加载JS

    HTML5中script的async属性异步加载JS     HTML4.01为script标签定义了5个属性: charset 可选.指定src引入代码的字符集,大多数浏览器忽略该值.defer 可 ...

  4. 淘宝购物车页面 智能搜索框Ajax异步加载数据

    如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区 ...

  5. winform异步加载数据到界面

    做一个学习记录. 有两个需求: 1.点击按钮,异步加载数据,不卡顿UI. 2.把获取的数据加载到gridview上面. 对于需求1,2,代码如下: public delegate void ShowD ...

  6. [Android Pro] 使用CursorLoader异步加载数据 from 3.0

    Android 3.0引入了CursorLoader实现异步加载数据,为了避免同步查询数据库时阻塞UI线程的问题.在API 11之前可以通过下载支持库,来使之前的系统支持此功能,下载页面为 http: ...

  7. android 网络异步加载数据进度条

    ProgressDialog progressDialog = null; public static final int MESSAGETYPE = 0; private void execute( ...

  8. 向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)[上拉加载组件]

    /**** desc : 分页异步获取列表数据,页面向上滚动时候加载前面页码,向下滚动时加载后面页码 ajaxdata_url ajax异步的URL 如data.php page_val_name a ...

  9. Highcharts 异步加载数据曲线图表

    导入 data.js 文件 异步加载数据需要引入以下js 文件: <script src="http://code.highcharts.com/modules/data.js&quo ...

随机推荐

  1. 开源Web测试工具介绍

    HtmlUnitHtmlUnit 是 JUnit 的扩展测试框架之一.HtmlUnit 将返回文档模拟成 HTML,这样您便可以直接处理这些文档了.HtmlUnit 使用例如 table.form 等 ...

  2. 吴裕雄--天生自然JAVAIO操作学习笔记:System类对IO的支持和BuffereRead

    import java.io.OutputStream ; import java.io.IOException ; public class SystemDemo01{ public static ...

  3. git 的一些基本命令

    基本命令 1.返回上一级目录:cd ../ 2.进入某一目录:cd git (进入 git 目录) 3. 显示当前路径:pwd 4.显示当前文件目录的文件 : dir 5.新建文件夹:mkdir +文 ...

  4. OKR-Periods of Words「POI 2006」

    题目描述 串是有限个小写字符的序列,特别的,一个空序列也可以是一个串.一个串 P 是串 A 的前缀,当且仅当存在串 B,使得 A = PB.如果 P != A 并且 P 不是一个空串,那么我们说 P  ...

  5. JuJu团队1月7号工作汇报

    JuJu团队1月7号工作汇报 JuJu 周六周日放假,所以空了两天~   Scrum 团队成员 今日工作 剩余任务 困难 飞飞 完成data process readme部分 实现三维Dense 无 ...

  6. firewalld学习--维护命令

    启动 systemctl start firewalld 停止 systemctl stop firewalld 重启 systemctl restart firewalld 查询状态 systemc ...

  7. systemctl常规应用

    以samba为例——常用项 #systemctl   start   smb ——在smb服务没有启动的情况下启动这项服务. #systemctl   restart   smb ——在修该过相应的配 ...

  8. UML图表示类之间的关系

    一.泛化(Generanization) 图: 泛化简单的说就是继承关系,在java中就是extend.表示一般与特殊的关系.如鸭子是鸟的一种,即有鸭子的特性也有鸟的共性.用带空心的三角箭头的实线指向 ...

  9. Java基础学习总结(一)——Java开发学习介绍

    Java平台: 1.J2SE java开发平台标准版 2.J2EE java开发费平台企业版 Java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序.不同的系统上要安装对 ...

  10. I0.0 上升边沿 清空 MW10~MW58 联系多个知识点融合

    编写程序 在I1.2 的上升边沿 触发 MW8+1的程序 实现方式1 M1.1 为中间变量 对应的STL语句表 执行结果 OK 已经仿真 . 现在尝试第2种方法 实现方式2: M1.1也是中间变量 S ...