我们可以迅速使用DispatchGroup将许多任务添加到该组中。该小组将等到所有任务完成后再继续下一个代码。
let dg = DispatchGroup()
dg.notify(queue: .global()) {
// run code here on completion
}
万一任务花费的时间太长,是否可以为这个dispatchGroup添加超时?
[编辑]
我知道DispatchGroup.wait(timeout:)
增加了超时。但这使它同步等待。有没有一种方法可以使用notify
方法进行异步操作,但是仍然存在超时?
答案 0 :(得分:2)
如果您希望DispatchGroup
异步超时,请尝试:
var dg: DispatchGroup? = DispatchGroup()
DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
self.dg = nil // after time out group is removed asynchronously
}
dg?.notify(queue: .global()) {
// run code here on completion
}