for循环中的Swift闭包

for循环中的Swift闭包,swift,Swift,目前我有一个在循环中执行闭包的代码。我想知道所有闭包何时完成执行。目前,我正在使用一个计数器,并在闭包完成时递增它,然后将其与要执行的次数进行比较。代码如下 var count = 0 var noOfTimes = 10 for i in 0..<noOfTimes { someVariable.someClosure { result in count = count + 1 if count == noOfTimes {

目前我有一个在循环中执行闭包的代码。我想知道所有闭包何时完成执行。目前,我正在使用一个计数器,并在闭包完成时递增它,然后将其与要执行的次数进行比较。代码如下

var count = 0
var noOfTimes = 10
for i in 0..<noOfTimes {
    someVariable.someClosure {
        result in
        count = count + 1
        if count == noOfTimes {
            //do something
        }
    }
}
var计数=0
var noOfTimes=10

对于0..中的i,您可以为此使用
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")
})
让dispatchGroup=dispatchGroup()
var noOfTimes=10

对于0中的i..闭包是同步执行的还是异步执行的?-请注意,如果count==noOfTimes
条件
将永远不会为真,因为循环只执行
noOfTimes-1
次。它是异步执行的。如果代码是错误的,只是想表达我的观点。我现在就改你为什么不用承诺?什么样的?这并没有解决最初的问题,但也许这就是你真正想要的。@eipipuz我确实看到了承诺。但是不想为一个简单的任务添加一个全新的框架。我想知道是否有一种简单的方法可以在swift语言中实现这一点?这对我帮助很大。