加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

for循环中的Swift闭包

发布时间:2020-12-14 05:46:33 所属栏目:百科 来源:网络整理
导读:目前我有代码在循环内执行闭包.我想知道所有闭包何时完成执行.目前我正在使用一个计数器并在完成闭包时递增它,然后我将它与要执行的次数进行比较.代码如下 var count = 0var noOfTimes = 10for i in 0..noOfTimes { someVariable.someClosure { result in co
目前我有代码在循环内执行闭包.我想知道所有闭包何时完成执行.目前我正在使用一个计数器并在完成闭包时递增它,然后我将它与要执行的次数进行比较.代码如下
var count = 0
var noOfTimes = 10
for i in 0..<noOfTimes {
    someVariable.someClosure {
        result in
        count = count + 1
        if count == noOfTimes {
            //do something
        }
    }
}

没有柜台,有没有更好的方法来做到这一点.
谢谢.

您可以使用DispatchGroup.它就像一个计数的信号量.您可以通过调用enter来增加计数,并通过调用leave来减少计数.您可以使用notify通过以下方式计划在计数达到0时执行的闭包:
let dispatchGroup = DispatchGroup()
var noOfTimes = 10
for i in 0..<noOfTimes {
    dispatchGroup.enter()  //  Enter the dispatch group
    someVariable.someClosure {
        result in
        // Process result
        ...
        dispatchGroup.leave() // Exit dispatch group
    }
}
dispatchGroup.notify(queue: DispatchQueue.main,execute: {
    print("All Done")
})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读