变量更改时调用异步函数 (SwiftUI)

Cen*_*enk 5 swift swift5 swiftui

我有一个@State变量和异步函数。我想每当该变量发生更改时调用异步函数。

基本上,我正在尝试做的事情

        VStack {
            Text("")
        }
        .onChange(of: var) { newValue in
            await asyncFunction()
        }
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误

无法将“(Int) async -> ()”类型的函数传递给需要同步函数类型的参数

Nir*_*v D 6

不能在同步函数中直接调用异步函数。您需要将您的调用包装起来Task,否则您需要将您的函数声明为async. 现在,在这种情况下,您无法执行onChange操作async,因此您需要用 来结束您的呼叫Task

Task { 
    await asyncFunction() 
}
Run Code Online (Sandbox Code Playgroud)