我有一个在for
循环中异步执行的闭包。
for i in 0..<10 {
closure
}
如何进入for循环,等待在进入下一次迭代之前执行闭包?
答案 0 :(得分:3)
这就是马克斯试图说的:
var queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
for i in 0..<10 {
queue.addOperation {
// closure here
}
}
答案 1 :(得分:1)
您可能想要使用NSOpertations或GCD。见Dispatch 或者你可以使用PromiseKit,如果你这么做的话。
答案 2 :(得分:1)
您可以使用Dispatch
非常简单地执行此操作:
import Dispatch // Necessary for DispatchQueue
import Foundation // Necessary for sleep
let closures = [ //The array of closures to execute serially
{ print(1); sleep(1) },
{ print(2); sleep(1) },
{ print(3); sleep(1) },
{ print(4); sleep(1) },
{ print(5); sleep(1) }
]
let queue = DispatchQueue(label: "My Serial Queue") // TODO: Name me
for closure in closures {
queue.sync(execute: closure)
}
// Alternatively:
// closures.forEach(queue.sync(execute:))
答案 3 :(得分:0)
您可以将它们添加到OperationQueue
并将其maxConcurrentOperationCount
设置为1.然后运行它们。