Я новичок в 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)
И я получаю ошибку:
⚠️ Обнаружена аномалия повторного входа. ⚠️
Отладка: для отладки этой проблемы вы можете установить точку останова в /****RxSwift/RxSwift/Rx.swift:97 и наблюдать за стеком вызовов.
Проблема: такое поведение нарушает грамматику наблюдаемой последовательности.
next (error | completed)?
Такое поведение нарушает грамматику, потому что события последовательности перекрываются. Наблюдаемая последовательность пытается отправить событие до завершения отправки предыдущего события.
почему я не могу выполнить ".onCompleted ()" внутри .do (onNext) и что мне делать, чтобы избежать предупреждения?
Я использую XCode 9.0, swift 4, RXSwift 4.0.0
Спасибо
С уважением
.onCompleted()
внутриdo
. Вероятно, вы захотите использоватьtakeWhile
. - person Enigmativity   schedule 03.12.2017view.endEditing(true)
и из-за этого переходил в цикл редактирования и завершения редактирования .. - person Skywalker   schedule 05.02.2020