Swift Concurrency 异步感染问题
Swift Concurrency 异步感染问题
当我们在一个非 async 的方法 A 里面调用 async 的方法 B 时,Xcode 会提示我们无法这么做: 'async' call in a function that does not support concurrency
,并且引导我们给 A 加上 async 标识。
⬆️ 这就是异步感染问题,async 方法的调用方在不知不觉中也变成了 async 方法。
为了避免 async 向上一直感染,可以使用 Task 方式调用 async 方法:
func A() {
Task {
await B()
}
}
func B() async {
print("Doing async work")
}