💻 Dev

🛠️ 처음부터 만드는 Once — 함수를 한 번만 실행하게 만들기

# Once 이해하기
Once는 함수를 단 한 번만 실행하도록 보장하는 유틸리티입니다. 이후 호출은 첫 번째 실행 결과를 반환합니다.

사용 사례


  • 초기화 로직 (DB 연결, 리소스 설정)

  • 이벤트 리스너 cleanup

  • 싱글톤 패턴 구현

  • API 요청 (한 번만 허용)

  • 구현


    ```javascript
    function once(fn) {
    let called = false;
    let result;
    return function(...args) {
    if (!called) {
    called = true;
    result = fn.apply(this, args);
    }
    return result;
    };
    }
    // 사용 예제
    const init = once(() => {
    console.log('초기화 시작');
    return 'initialized';
    });
    init(); // '초기화 시작' 출력, 'initialized' 반환
    init(); // 아무것도 출력 안 함, 'initialized' 반환
    ```

    TypeScript 버전


    ```typescript
    function once any>(fn: T): T {
    let called = false;
    let result: any;
    return ((...args) => {
    if (!called) {
    called = true;
    result = fn(...args);
    }
    return result;
    }) as T;
    }
    ```

    실전: 비동기 초기화


    ```javascript
    const connectDB = once(async () => {
    console.log('DB 연결 중...');
    // 실제 연결 로직
    return { connected: true };
    });
    await connectDB(); // 한 번만 실행
    await connectDB(); // 첫 번째 결과 반환
    ```
    한 번만 실행되어야 하는 작업에서 중복 호출 방지와 성능 최적화를 동시에 얻을 수 있습니다.
    💬 0
    👁 0 views

    Comments (0)

    💬

    No comments yet.

    Be the first to comment!