unc sumTheassets(compHandler:@escaping (_ sum:Float)->()) {
var asset:Float = 0
let group = DispatchGroup() //创建group
for object in objects { //for循环便利本地存储的数组数据
group.enter() // 将以下任务添加进group
let cellViewmodel = MyassetsCellViewModel() // 创建VM对象,并调用网络请求函数
cellViewmodel.getThepriceFromnew(symbol: object.symbol, compHandler: { (price, ratio) in
let decimals = Float(object.decimals) // 获取数量,转为Float型
let num = price * decimals! //计算总价格 单价 * 数量
asset += num //将计算结果累加
group.leave() //本次任务完成(即本次for循环任务完成),将任务从group中移除
})
}
group.notify(queue: .main) { // group中的所有任务完成后再主线程中调用回调函数,将结果传出去
compHandler(asset) //在回调里将累加结果传出去
}
}
iOS: Swift 中 DispatchGroup 分组管理异步任务使用
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- https://blog.csdn.net/deft_mkjing/article/details/5151855...
- 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布转载请标明出处: http://www.jian...
- 异步任务介绍 在写项目过程中经常会遇到一些耗时的任务, 比如:发送邮件、发送短信等等~。这些操作如果都同步执行耗时...
- 程序中使用:https://cloud.tencent.com/developer/news/334913使用多线...