In a ViewModel, I'm currently using callbacks to 1. make an API call and set data1, 2. use data1 in a second API call to set data2, then use data2 in a third function to parse and set a published value to be used in a View.
The examples I've seen so far have been based on awaiting return values. I only want to run void functions in succession. I've tried implementing the concept below but I keep getting "async in a function that does not support concurrency".
// ViewModel
var data1:Data?
var data2:Data?
@Published var myString:String?
func getFirstData() async -> Void {
data1 = someAPIrequest()
}
func getSecondData() async -> Void {
data2 = anotherAPIrequest(await data1)
}
func setViewString() {
myString = data2!.name
}
// View
var body: some View {
Text(await model.myString)
}.onAppear{
getFirstData()
getSecondData()
}