Pattern) IIFE

IIFE (Immediately Invoked Function Expression)

익명 함수 즉시 실행

Usage

defer와 함께 리소스(Lock, 파일, 타이머 등)의 해제 시점을 제어하기 위해서 사용

  • 뒤이어 실행될 로직(이메일 전송, 파일 업로드 등)에 영향을 주지 않기 위해,
    앞선 작업의 정리(Clean-up)를 강제로 앞당김
  • 함수 내 초기화 로직에서 Lock 이 필요할 때

    • defer 를 익명 함수 내에서 선언함으로써 익명 함수 실행(e.g. 초기화 로직)이 끝날 때 호출
      • 락 안정성 보장: defer 를 통해 Lock 이 해제됨을 보장
    e.g.
    1func() {
    2	s.startedLock.Lock()
    3	defer s.startedLock.Unlock() // 이 익명 함수가 끝나면 바로 언락됨
    4	// ...
    5}()
    
  • 반복문 안에서의 defer

    • ⚠️ defer 의 실행 시점은 함수가 반환될 때이기 때문에 반복문 내에서 바로 실행되지 않음
    • 익명 함수(IIFE)를 만들고 이 안에서 로직과 함께 defer 선언

포스트
카테고리
시리즈