使用DispatchGroup时如何超时?

时间:2020-07-20 16:33:53

标签: swift

我们可以迅速使用DispatchGroup将许多任务添加到该组中。该小组将等到所有任务完成后再继续下一个代码。

let dg = DispatchGroup()
dg.notify(queue: .global()) {
   // run code here on completion
}

万一任务花费的时间太长,是否可以为这个dispatchGroup添加超时?

[编辑]

我知道DispatchGroup.wait(timeout:)增加了超时。但这使它同步等待。有没有一种方法可以使用notify方法进行异步操作,但是仍然存在超时?

1 个答案:

答案 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
}