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")
}