
'onComplete'는 주로 비동기 작업이나 이벤트 처리에서 "작업이 완료되었을 때 호출되는 콜백 또는 이벤트 핸들러"를 가리키는 이름입니다. 의미와 사용 방식은 플랫폼이나 라이브러리에 따라 조금씩 다르지만 공통된 개념은 다음과 같습니다. 주요 의미 - 어떤 작업(네트워크 요청, 파일 처리, 애니메이션, 스트림 등)이 끝났을 때 실행되는 함수나 핸들러를 말합니다. - 완료 시점에서의 결과(성공/실패, 반환값 등)를 전달받아 후속 처리(화면 갱신, 정리 작업, 상태 변경 등)를 수행합니다. - 보통 한 번만 호출되는 경우가 많지만 스트림(예: Rx)의 경우에는 "더 이상의 데이터가 올 수 없음을 알리는 완료 이벤트"로 사용됩니다. 플랫폼별 예시 - JavaScript (콜백 스타일): 비동기 작업이 끝나면 호출되는 콜백으로 사용. 예: someAsyncTask({ onComplete: (result, error) => { /* 처리 */ } }) - JavaScript (Promise/async): 명시적 이름은 아니지만 Promise.then/.catch/.finally와 동일한 역할을 하는 경우가 많음. 특히 finally는 성공·실패 여부에 상관없이 "완료 시" 실행됨. - Android (Task API): OnCompleteListener가 작업(Task)이 끝났을 때 호출되며, Task 객체로 성공 여부와 결과를 확인함. - Rx (ReactiveX): onComplete는 Observable이 정상적으로 모든 항목을 전송하고 더 이상 항목이 없음을 알리는 이벤트. (오류가 있으면 onError가 대신 호출됨) 차이점(관련 용어와 비교) - onSuccess/onFailure: 성공 또는 실패 전용 핸들러인 반면, onComplete는 성공 여부와 관계없이 "완료"를 알리거나(또는 스트림의 정상 종료를 알림) 둘 다를 포괄하는 역할을 함. - finally (Promise): 성공/실패 상관없이 실행되는 후처리이며 onComplete와 유사한 목적. 일반적인 사용 관례 및 주의사항 - onComplete 내부에서는 결과 확인(성공/실패 구분)이나 후속 작업 수행, 리소스 해제 등을 처리함. - UI 업데이트가 필요하면 플랫폼의 메인(UI) 쓰레드에서 실행해야 함. - 한 번만 호출된다는 보장을 전제로 한 코드(예: 상태를 초기화하거나 리스너 제거)를 작성할 때는 호출 횟수에 주의. - 메모리 누수 방지: 리스너가 더 이상 필요 없을 때 해제해야 함. - 예외 처리: onComplete 내부에서 발생한 예외가 전체 흐름을 깨지 않도록 적절히 처리. 요약 'onComplete'는 비동기 작업의 완료 시점에 실행되는 콜백/핸들러로, 성공·실패 여부를 확인하고 후속 정리나 UI 갱신 등을 담당합니다. 플랫폼마다 세부 동작은 다를 수 있으니 사용 중인 API의 문서를 참고해 성공/실패 구분, 호출 시점, 스레드 규칙 등을 확인하는 것이 좋습니다.