Swift

'async' call in a function that

2021-12-22  本文已影响0人  胖虎不会飘

在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
上一篇 下一篇

猜你喜欢

热点阅读