ViewModel では、現在コールバックを使用して 1. API 呼び出しを行い、data1 を設定します。2. 2 番目の API 呼び出しで data1 を使用して data2 を設定し、3 番目の関数で data2 を使用して、公開された値を解析して設定します。ビューで使用されます。
これまで見てきた例は、戻り値を待つことに基づいていました。void 関数を連続して実行したいだけです。以下の概念を実装しようとしましたが、「同時実行をサポートしていない関数で非同期」になり続けています。
// 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()
}