0

我有一个基于回调的 API。

func start(_ completion: @escaping () -> Void)

我想在该 API 之上编写一个 async/await 包装器,将实现推迟到基于原始回调的 API。

func start() async {
    let task = Task()
    start { 
        task.fulfill()
    }
    
    return await task
}

显然,这段代码没有连接——它不是真实的,fulfillTask.

问题:有没有办法在 Swift 中使用非结构化并发来帮助我实现这一目标?

4

1 回答 1

2

您正在寻找延续

以下是如何在您的示例中使用它:

func start() async {
    await withCheckedContinuation { continuation in
        start(continuation.resume)
    }
}
于 2021-11-09T18:22:13.700 回答