2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

onNext

작성: sangseek | 게시 날짜: 2026/01/12 | 조회수: 49
[ 편집불가 ]

onNext는 리액티브 프로그래밍(예: ReactiveX 계열—RxJava, RxJS, RxSwift 등)에서 옵저버(구독자)가 발행자(Observable, Flowable 등)로부터 "새로운 데이터 항목(item)을 전달받을 때" 호출되는 콜백 메서드의 이름입니다. 주요 의미와 동작은 다음과 같습니다. - 역할: 발행자가 내보낸 각 항목을 옵저버가 처리하도록 전달한다. onNext는 항목 하나당 한 번씩 호출되며, 여러 번 호출될 수 있다. - 라이프사이클에서 위치: 일반적으로 구독 시작 → 여러 번의 onNext 호출 → (종료) onComplete 또는 (오류) onError. onComplete/onError가 호출되면 더 이상 onNext는 호출되지 않는다. - 터미널이 아님: onNext 자체는 종료 동작이 아니고 스트림의 중간 이벤트다. 스트림의 종료는 onComplete 또는 onError로 표현된다. - 에러 처리: onNext 내부에서 예외가 발생하면 보통 onError로 전파되거나 구독이 취소될 수 있다(구현체에 따라 동작 방식이 조금 다름). RxJava 등에서는 null 아이템을 허용하지 않는다(NullPointerException). - 동시성 규약: 일반적으로 동일한 구독자에 대해 onNext는 동시(병렬)로 호출되어선 안 된다. 발행자는 onNext 호출을 직렬화해야 하며, 옵저버도 동시 호출을 가정해선 안 된다. - 백프레셔(Backpressure): 항목 생성 속도가 소비 속도를 초과할 수 있는 경우(특히 Flowable 같은 타입) 백프레셔 정책을 신경 써야 한다. Observable은 기본적으로 백프레셔가 없고 Flowable은 요청(request) 기반으로 항목을 전달한다. - 권장 사용 방식: - onNext에서 무거운 작업(블로킹 연산)을 직접 수행하지 말고, 필요한 경우 스케줄러나 워커로 오프로드할 것. - 구독이 취소되었는지(또는 Disposable/Subscription 상태)를 확인하고 처리할 것. - 상태를 안전하게 다루고, 가능한 한 로직은 짧고 부수효과를 명확히 할 것. - 관련 개념: Single/Maybe/Completable 같은 다른 스트림 타입은 onNext 대신 onSuccess, onComplete만을 사용하거나 항목 한 번만 전달하는 등 동작이 다르다. 요약하면, onNext는 리액티브 스트림에서 발행자가 보낸 "다음 데이터 항목"을 수신해 처리하는 콜백이며, 여러 번 호출될 수 있고 스트림의 종료는 onComplete/onError로 별도 표시된다는 점이 핵심입니다.
내용이 부정하다면 싫어요를 누르세요.