Escaping Closure
작성일
Escaping Closure
- 시작과 종료가 일정하지 않다.
func performNonEscaping(closure: () -> ()) {
print("start")
closure()
print("end")
}
performNonEscaping {
print("closure")
}
출력
start
closure
end
이렇게 함수바디에서 실행하고있는 클로져는 함수가 끝나기 전에 안에서 실행을 한다.
func performEscaping(closure: @escaping () -> ()) {
print("strart")
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
closure()
}
print("end")
}
performEscaping {
print("closure")
}
함수의 흐름과 상관이 없어진다. 출력
start
end
closure
함수가 종료후 3초가 지난후 실행된다.
이런 방식은 클로져가 함수의 실행을 벗어날 수 있다.
따라서 활용이 무궁무진하다.