7
votes

What is the difference betweeen these two operators ? http://reactivex.io dont mention .subscribeNext at all.

1
subscribeNext() will only receive emitted values, and not onComplete or onError indications. - Bob Dalgleish
Great! Thanks a lot! - Alexey K

1 Answers

14
votes

In RxSwift versions older than 3, subscribeNext(_: Value -> ()) was a specialized version of subscribe(_: Event<Value> -> ()).

subscribe(_:) would be triggered for every cases of event, namely .next(Value), .error(Error) and .completed.

subscribeNext would trigger only for .next(Value), unpacking Value first.

As of RxSwift version 3, subscribeNext is now

func subscribe(
  onNext: ((Value) -> ())? = nil,
  onError: ((Error) -> ())? = nil,
  onCompleted: (() -> ())? = nil, 
  onDisposed: () -> () = nil
)

The nil default values enabling users to call subscribe only with the callbacks they are interested about.