Экспорт 10 000 заказов продолжается после нажатия «Отмена»
exportTask = Task {
for order in orders { // 10 000 заказов
rows.append(Formatter.csvRow(order)) // синхронно
}
try await uploader.upload(rows)
}
// кнопка «Отмена»
exportTask?.cancel()
После «Отмены» цикл доходит до конца, процессор загружен ещё 8 секунд. Что добавить?
- Проверять отмену в цикле: Task.checkCancellation()
- Вызывать cancel() дважды для надёжности
- Заменить Task на Task.detached
- Обнулять exportTask после cancel()
