我是RxSwift和反应式编程的新手。这是我的代码:
let disposeBag = DisposeBag()
let dartScore = PublishSubject<Int>()
dartScore.asObserver()
.scan(501, accumulator: {
intermediate, newValue in
var result = intermediate - newValue
return result >= 0 ? result : intermediate
})
.do(onNext: {
if $0 == 0 {
dartScore.onCompleted()
}
})
.subscribe(onNext:{print($0)}, onCompleted:{print("Game over")})
.addDisposableTo(disposeBag)
dartScore.onNext(13)
dartScore.onNext(60)
dartScore.onNext(50)
dartScore.onNext(0)
dartScore.onNext(0)
dartScore.onNext(378)
您可能会注意到
dartScore.asObserver()
。如果删除.asObserver()
或将其替换为.asObservable()
,则最终结果相同:488
428
378
378
378
Game over
有谁能帮忙解释一下
asObserver
,asObservable
和observable
之间的区别,或者什么都不是Subject
中的正常对象? 最佳答案
因为aSubject
既是一个ObserverType
也是一个Observable
。当您调用PublishSubject
时,PublishSubject
不会键入erase fromAnyObserver
toasObserver
,因此您仍然有一个PublishSubject
,因为它是一个Observable
,所以仍然可以使用subscribe
调用。
关于swift - RxSwift中asObserver,asObservable和none之间有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39305585/