Код: Выделить всё
func onSubmit()
{
// @State
isLoading = true
Task
{
try await someNetworkRequest()
await MainActor.run { isLoading = false }
}
}
[*] Запускается кнопкой В просмотре панель инструментов: UI сразу отражает isloading = true . Скажи, это связано с тем, что действие кнопки работает немедленно, в то время как в onsubmit Textfield может придется выполнять другие задачи, такие как уход в отставку первого респондента, совершение текста и отклонение клавиатуры, прежде чем на самом деле добраться до моего действия. Кнопка поведение.
Например, если вместо того, чтобы просто вызовать onsubmit () , я обертываю свой призыв к onsubmit () в dispatchqueue.main.async , тогда поведение реверсируется - Textfield onsubmit ведет себя, но кнопку код . /> Я пробовал различные другие методы, такие как запуск wawait mainactor.run {isloading = true} в задаче , но это не имеет значения. И я не настолько знаком с параллелизмом Swiftui, чтобы знать наверняка, но я не думаю, что смешивание более новой задачи с Dispatchqueue обычно рекомендуется.
Как я могу работать для обоих случаев?>
Подробнее здесь: https://stackoverflow.com/questions/796 ... n-onsubmit