Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the RxSwift 3.0 equivalent to AnonymousDisposable from RxSwift 2.x?

The ReactiveX.io documentation uses AnonymousDisposable, which was in RxSwift 2.x, but is an unresolved identifier in RxSwift 3.0. What should I use instead?

let source = Observable.create { observer in
  for i in 1...5 {
    observer.on(.Next(i))
  }
  observer.on(.Completed)

  // Note that this is optional. If you require no cleanup you can return
  // NopDisposable.instance
  return AnonymousDisposable {
    print("Disposed")
  }
}

source.subscribe {
  print($0)
}
like image 543
DavidA Avatar asked Dec 02 '16 16:12

DavidA


2 Answers

Note that this syntax from Swift 2:

NopDisposable.instance

has also been replaced with

Disposables.create() 

Beyond that, it's interesting to note that, under the hood, NopDisposable still exists but is exposed via this create method. Here's the source.

like image 109
Dan Rosenstark Avatar answered Oct 13 '22 21:10

Dan Rosenstark


To create Observable's in Swift 3,4,5 you have to substitute the old AnonymousDisposable instance with Disposables.create(), like in this way:

let source = Observable.create { observer in
    observer.on(.next(1))
    observer.on(.completed)
    return Disposables.create()
}

If you wanna take some action when the Observable is disposed you can use the one you mention before instead:

return Disposables.create {
    print("Disposed")      
}

I hope this help you.

like image 44
Victor Sigler Avatar answered Oct 13 '22 19:10

Victor Sigler