【发布时间】:2022-08-20 18:38:33
【问题描述】:
我试图了解为什么以下代码会引发断言。我想做的是从调用站点在主线程/主要参与者上调用asyncFunc()。我不想用@MainActor 装饰 asyncFunc,因为我希望该函数与线程无关。
func asyncFunc() async -> String? {
dispatchPrecondition(condition: .onQueue(.main))
return \"abc\"
}
func callSite() {
Task { @MainActor in
await asyncFunc()
}
}
我的理解是Task { @MainActor ...} 将在 MainActor/主线程上执行以下所有代码。
-
好吧,闭包和闭包中的任何同步调用都在主线程上,但不一定是内部异步函数。
标签: swift async-await