Sobes.tech
Junior — Middle

What is the difference between onNext and onSuccess methods in reactive programming or stream APIs?

sobes.tech AI

Answer from AI

The methods onNext and onSuccess are used in reactive programming but serve different purposes and are used in different types of streams.

  • onNext is called upon receiving each element in the data stream. It is characteristic of streams that can emit multiple elements (for example, Observable or Flux). Each call to onNext corresponds to a new element.

  • onSuccess is called once upon the successful completion of an operation that returns exactly one element or result. This is typical for types that work with a single value or error (for example, Single in RxJava or Mono in Project Reactor).

Example:

// Observable with onNext
Observable.just(1, 2, 3)
    .subscribe(
        item -> System.out.println("onNext: " + item),
        error -> System.err.println(error),
        () -> System.out.println("Completed")
    );

// Single with onSuccess
Single.just(42)
    .subscribe(
        result -> System.out.println("onSuccess: " + result),
        error -> System.err.println(error)
    );

Thus, onNext is for streams with multiple elements, onSuccess is for streams with a single successful result.