是否可以阻塞队列,直到同一队列上的异步任务完成为止?

时间:2017-05-25 15:15:14

标签: ios swift multithreading asynchronous grand-central-dispatch

我使用第三方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()

0 个答案:

没有答案