2

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

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

并且 xcode 尝试强制执行doSomething()函数 fromclass 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)
        }
     }
  }
}
4

1 回答 1

5

您可以将函数包装在TaskTask

func doSomething() {
      Task {
        do {
           await try a.doSomething()
        } catch {
           print(error)
        }
     }
  }
于 2021-10-12T12:07:01.487 回答