在不支持并发swiftiosXcodeasync/await的函数中调用“异步”
我正在尝试在 Swift 5.5 中使用 async/await。我有我的异步函数,但是每当我尝试调用它时,我都会收到此错误:
不支持并发的函数中的“异步”调用
这是代码示例:
class TryThis {
func getSomethingLater(_ number: Double) async -> String {
// test - sleep for 3 seconds, then return
Thread.sleep(forTimeInterval: 3)
return String(format: ">>>%8.2f<<<", number)
}
}
let tryThis = TryThis()
let result = await tryThis.getSomethingLater(3.141592653589793238462)
print("result: (result)")
这个有什么解决办法??
回答
这里的答案是必须从异步上下文调用“await getSomethingLater”。从字面上看,这意味着改变这一点:
let result = await tryThis.getSomethingLater(3.141592653589793238462)
print("result: (result)")
进入这个:
Task {
let result = await tryThis.getSomethingLater(3.141592653589793238462)
print("result: (result)")
}
所以整个事情变成了:
class TryThis {
func getSomethingLater(_ number: Double) async -> String {
// test - sleep for 3 seconds, then return
Thread.sleep(forTimeInterval: 3)
return String(format: ">>>%8.2f<<<", number)
}
}
let tryThis = TryThis()
Task {
let result = await tryThis.getSomethingLater(3.141592653589793238462)
print("result: (result)")
}
这是输出:
结果:>>> 3.14<<<
来自 WWDC21的Meet 同步/等待 Swift视频中有很好的信息。
THE END
二维码