Я написал множество completion handler'ов для различных задач, в том числе:
- Обработка результатов сетевых запросов (получение данных, статуса выполнения).
- Асинхронные операции с базой данных (сохранение, чтение, обновление).
- Операции файловой системы (чтение, запись, удаление).
- Анимации и пользовательские интерфейсы (завершение анимации, обработка пользовательских жестов).
- Кастомные асинхронные операции с возможностью передачи результата и ошибок.
Например, при работе с URLSession я часто использую такой шаблон:
swift
где completion — это closure типа (Result<SomeModel, Error>) -> Void. Использование Result позволяет четко разделить успешное завершение и ошибку.