Что такое Completion Handler в Swift и iOS?
Что такое Completion Handler
Поговорим о том что такое Completion Handler или Обработчик выполнения,
зачем он нужен и как его применять?
Прежде всего краткое определение:
Completion handler - это функция, которая в качестве параметра принимает другую функцию.
Эта функция позволит выполнить основную часть кода только после завершения кода-триггера. Причина по которой нужны такие функции заключается в том,
что мы хотим быть уверены и уведомлены о завершении определенного кода. Обработчик выполнения работает асинхронно. Он позволяет не блокировать
остальной код в ожидании завершения какого-либо процесса. О синхронности, асинхронности и многопоточности обязательно поговорим немного позже.
Приведем простой пример.
Создадим свой Обработчик выполнения следующим образом:
let myCompletionHandler: (Bool) -> Void = { doneWorking in
if doneWorking {
print("Work is done.")
}
}
Completion Handler выполняет свою часть кода только после того, как ему
передадут значение true. Это может быть полезно в случаях, когда одна
функциональность кода критически зависит от другой и без завершения выполнения
первой части вторая не выполнится, или приведет к ошибке.
После того, как мы создали обработчик события, нужно создать функцию, которая
его примет:
func myFunction(using completionHandler: (Bool) -> Void) {
sleep(3)
print("Function finished.")
completionHandler(true)
}
После создания функции вызываем ее и передаем в качеству аргумента наш
обработчик события:
myFunction(using: myCompletionHandler)
Completion Handler нужен тогда, когда мы понятия не имеем сколько времени потребуется на выполнение определенной задачи, и чтобы не ждать ее выполнения, мы просто создаем обработчик выполнения, даем ему задание, и идем дальше.