Home > other >  Call a async function when a variable is changed (SwiftUI)
Call a async function when a variable is changed (SwiftUI)

Time:09-14

I have a @State variable and async function. I want to call the async function whenever that variable is changed.

Basically, what I am trying to do

        VStack {
            Text("")
        }
        .onChange(of: var) { newValue in
            await asyncFunction()
        }

But this gives me the following error

Cannot pass function of type '(Int) async -> ()' to parameter expecting synchronous function type

CodePudding user response:

You cannot directly call an async function in the synchronous function. You need to wrap your call in Task or else you need to declare your function as async. Now in this case you cannot make your onChange action async so you need to wrap your call with Task.

Task { 
    await asyncFunction() 
}
  • Related