gpt4 book ai didi

swift - RxSwift 中的 asObserver、asObservable 和 none 有什么区别

转载 作者:行者123 更新时间:2023-11-28 16:13:47 31 4
gpt4 key购买 nike

我是 RxSwift 和 Reactive 编程的新手。这是我的代码:

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

任何人都可以帮助解释 asObserverasObservable 或什么都不是普通 observable 对象之间的区别)在 主题?

最佳答案

这是因为Subject既是ObserverType又是Observable。当您调用 asObserver 时,PublishSubject 不会键入从 PublishSubjectAnyObserver 的删除,因此您仍然有一个 PublishSubject,因为它是一个 Observable,仍然可以用 subscribe 等调用。

关于swift - RxSwift 中的 asObserver、asObservable 和 none 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39305585/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com