我使用第三方API在主队列上执行任务,然后调用我提供的完成块。
我需要同步等待异步任务才能在同一个队列(主要)上完成。
有没有办法做到这一点?我无法想到一种方法,因为异步任务永远不会启动,因为我将阻塞主队列,等待它完成。
以下是一个例子:
// I have no control over this API other than the callback
class SomeAPI {
static func someAPIfunction(callback: () -> Void) {
DispatchQueue.main.async {
// something important it does
// ....
callback()
}
}
}
// This is somewhere like an XCTestCase, where we're on the main queue
let group = DispatchGroup()
group.enter()
SomeAPI.someAPIfunction {
group.leave()
}
group.wait()