2016-12-02 31 views
10

ReactiveX.io documentation使用AnonymousDisposable,它位于RxSwift 2.x中,但在RxSwift 3.0中是未解析的标识符。我应该用什么来代替?什么是RxSwift 3.0等同于RxSwift 2.x中的AnonymousDisposable?

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) 
} 

回答

14

要在斯威夫特3 Observable的你以这种方式与Disposables.create()替代旧AnonymousDisposable实例,如:

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

如果你想在Observable处置时采取一些行动,您可以使用之前提到的那个:

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

我希望这对你有所帮助。

0

用途:

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

注意,从斯威夫特2这句法:

NopDisposable.instance 

也被替换

Disposables.create() 

除此之外,这是有趣的是,在引擎盖下,NopDisposable仍然存在,但暴露通过这个create方法。 Here's the source