下面是一个简单的例子:
let unlockResolve = () => {}
async function semaphore() {
await new Promise((resolve) => {
unlockResolve = resolve
})
}
async function stopAtTheRedLight() {
await semaphore()
}
function unlocksSemaphore() {
unlockResolve()
unlockResolve = () => {}
}
await stopAtTheRedLight()
// Somewhere else:
// [...]
unlocksSempahore()
基于async/await的Swift代码是什么?
2条答案
按热度按时间p8h8hvxi1#
关于你自己的回答:不需要闭包来恢复
Continuation
,只需将其保存在私有属性中即可。我 * 删除了 * 术语
semaphore
的误导性出现,并将asyncAfter
替换为Swift Concurrency的等价物。vd2z7a6w2#
**更新:**一夜之间开发出了一个锁定库,标记文档是TODO,即将推出。
https://github.com/oxygen/AsyncAwaitLock-Swift
//////////////