【问题标题】:Swift - Not wait for async to returnSwift - 不等待异步返回
【发布时间】:2021-12-01 00:34:47
【问题描述】:

我希望能够让来自class B 的函数doSomething() 不是async 并且不阻塞它的调用者线程。但是使用以下代码我得到了这个错误:

无法将“() async -> Void”类型的函数传递给期望同步函数类型的参数

并且 xcode 尝试将 doSomething() 函数从 class B 强制为 async

class A {
    func doSomething() async throws {
       //perform 
    }
}

class B {
   let a = A()
   func doSomething() {
      DispatchQueue.global().async {
        do {
           await try a.doSomething()
        } catch {
           print(error)
        }
     }
  }
}

【问题讨论】:

    标签: ios swift async-await structured-concurrency


    【解决方案1】:

    您可以将函数包装在TaskTask

    func doSomething() {
          Task {
            do {
               await try a.doSomething()
            } catch {
               print(error)
            }
         }
      }
    

    【讨论】:

    • hmmm,我在 Swift 包中有这个代码并且得到了这个错误Cannot find 'Task' in scope
    • 好的,我知道了,它是 iOS 15+
    猜你喜欢
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 2021-06-30
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 2014-10-01
    相关资源
    最近更新 更多