如何在 onSubmit 块中使用 swift wait 函数

isr*_*012 2 synchronous async-await swift swift5 swiftui

我有一个包含搜索数据的列表。为了获取数据,我想调用await func(swift 5.5),但我收到此错误:

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

这是我的代码:

struct ContentView: View {


@ObservedObject var twitterAPI: TwitterAPI = TwitterAPI()

@State private var searchText = "TheEllenShow" // TheEllenShow

var body: some View {
    NavigationView {
        VStack{
            if twitterAPI.twitterSearchResults?.resultDataVM != nil{
                List {
                    ForEach((twitterAPI.twitterSearchResults?.resultDataVM)!) { item in
                        Text(item.text)
                    }
                }
                .refreshable {
                    await twitterAPI.executeQuery(userName: searchText)
                }
            }else{
                Text("Loading")
            }
            Spacer()
            
            
        }
        .searchable(text: $searchText)
        .onSubmit(of: .search) {
            await twitterAPI.executeQuery(userName: searchText)
        }

        .navigationTitle("Twitter")
        
    }
    .task {
        await twitterAPI.executeQuery(userName: searchText)
    }
}  }
Run Code Online (Sandbox Code Playgroud)

Sco*_*man 6

要从同步代码块调用异步代码,您可以创建一个Task对象:

.onSubmit(of: .search) {
  Task {
    await twitterAPI.executeQuery(userName: searchText)
  }
}
Run Code Online (Sandbox Code Playgroud)