在Swift5.5中使用async/await时,调用async函数的时候,出现了一个错误。
'async' call in a function that does not support concurrency
我的代码如下:
public func concurrentCode(n: Int) async -> Int {
let number = n * 2
do {
try await Task.sleep(nanoseconds: 2 * 1_000_000_000)
} catch {
print("error:\(error)")
}
return number
}
let con = Concurrent()
let number = await con.concurrentCode(n: 10)
print("result:\(number)")
原因是:await concurrentCode
的方法必须在async
函数中进行调用。即调用者必须是异步的。
将代码改成如下即可:
Task {
let con = Concurrent()
let number = await con.concurrentCode(n: 10)
print("result:\(number)")
}
得到输出参数是:
result:20
网友评论