ios - 在不支持并发的函数中调用'async' swift ios Xcode async/await
问题描述
我正在尝试将 async/await 与 Swift 5.5 一起使用。我有我的异步函数,但每当我尝试调用它时,我都会收到此错误:
在不支持并发的函数中调用“异步”
这是代码示例:
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 sync/await in Swift视频中有很好的信息。
推荐阅读
- mysql - 错误 1698 (28000):用户 'root'@'localhost' 的访问被拒绝,迁移在没有 sudo 的情况下运行
- django - Django-tag 以写的形式显示,而不是 Django-forms
- sql-server - Spring jpa repo 的意外行为(事务内的唯一键违规)
- json - 访问 json 响应中的独立值
- python - 以 CSV 格式输出 Segy 属性
- react-native - 如何在本机反应中获得图像周围的文本?
- python - 如何进行由用户将图像移动到画布上的特定位置触发的项目配置?
- python - pyinstaller / cx_freeze 错误
- c++ - 如何修复初始化错误?
- python - 我尝试使用 python 3.7.2 安装“pyinstaller”