Отмена задачи в SwiftUI ⇐ IOS
-
Anonymous
Отмена задачи в SwiftUI
Я столкнулся со странным поведением (или, по крайней мере, с тем, которое мне непонятно) при попытке отменить Задание. Вот минимальный пример: у меня есть Задача, которая бездействует 30 секунд, а затем увеличивает счетчик.
Однако, если я вызову .cancel() для этой задачи до того, как пройдет 30 секунд, счетчик немедленно увеличится.
Я ожидал, что отмена Задачи не приведет к увеличению значения счетчика; есть ли у кого-нибудь представление о том, что здесь происходит?
Спасибо!
импортировать SwiftUI структура ContentView: Просмотр { Задача @State var: Task? = nil // ссылка на задачу @State счетчик переменных = 0 var body: some View { VStack(интервал: 50) { // отображаем значение счетчика и создаем задачу Text("счетчик равен \(self.counter)") .onAppear { self.task = Задача { пытаться? ждут Task.sleep(наносекунд: 30_000_000_000) self.counter += 1 } } // кнопка отмены Кнопка("Отмена") { self.task?.cancel() //
Я столкнулся со странным поведением (или, по крайней мере, с тем, которое мне непонятно) при попытке отменить Задание. Вот минимальный пример: у меня есть Задача, которая бездействует 30 секунд, а затем увеличивает счетчик.
Однако, если я вызову .cancel() для этой задачи до того, как пройдет 30 секунд, счетчик немедленно увеличится.
Я ожидал, что отмена Задачи не приведет к увеличению значения счетчика; есть ли у кого-нибудь представление о том, что здесь происходит?
Спасибо!
импортировать SwiftUI структура ContentView: Просмотр { Задача @State var: Task? = nil // ссылка на задачу @State счетчик переменных = 0 var body: some View { VStack(интервал: 50) { // отображаем значение счетчика и создаем задачу Text("счетчик равен \(self.counter)") .onAppear { self.task = Задача { пытаться? ждут Task.sleep(наносекунд: 30_000_000_000) self.counter += 1 } } // кнопка отмены Кнопка("Отмена") { self.task?.cancel() //
Мобильная версия