目前我有代码在循环内执行闭包.我想知道所有闭包何时完成执行.目前我正在使用一个计数器并在完成闭包时递增它,然后我将它与要执行的次数进行比较.代码如下
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") })
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。