我在RXSwift初学者,我有问题,我的代码RXSwift,检测重入异常
我有代码:
let dartScore = PublishSubject<Int>()
dartScore.asObservable()
.scan(501) { intermediate, newValue in
let result = intermediate - newValue
return result >= 0 ? result : intermediate
}
.do(onNext: {
if $0 == 0 {
dartScore.onCompleted()
}
})
.subscribe({
print($0.isStopEvent ? $0 : $0.element!)
})
.disposed(by: disposeBag)
dartScore.onNext(13)
dartScore.onNext(50)
dartScore.onNext(60)
dartScore.onNext(378)
,我得到错误:
⚠️ Reentrancy anomaly was detected. ⚠️
Debugging: To debug this issue you can set a breakpoint in /****RxSwift/RxSwift/Rx.swift:97 and observe the call stack.
Problem: This behavior is breaking the observable sequence grammar.
next (error | completed)?
This behavior breaks the grammar because there is overlapping between sequence events. Observable sequence is trying to send an event before sending of previous event has finished.
为什么我不能在.do(onNext)中执行“.onCompleted()”,我该怎么做才能避免警告?
我使用的XCode 9.0,快捷4,RXSwift 4.0.0
谢谢
问候
我是说的Rx完成.NET的家伙,但我认为RxSwift的行为方式相同 - 所以不要在'do'内部执行'.onCompleted()'。你可能想使用'takeWhile'。 – Enigmativity
谢谢你的建议,@Enigmtivity, Regards –