Swift `示例`在完成时触发。如何避免? let stream=PublishSubject() let trigger=PublishSubject() stream.sample(trigger.subscribeNext{打印中的值(“值\(值)”)} stream.onNext(5) trigger.onCompleted()
上面的命令将“值5”打印到控制台。我觉得这很奇怪,因为我从未在触发器上调用onNext()Swift `示例`在完成时触发。如何避免? let stream=PublishSubject() let trigger=PublishSubject() stream.sample(trigger.subscribeNext{打印中的值(“值\(值)”)} stream.onNext(5) trigger.onCompleted(),swift,reactive-programming,rx-swift,Swift,Reactive Programming,Rx Swift,上面的命令将“值5”打印到控制台。我觉得这很奇怪,因为我从未在触发器上调用onNext() 在我的例子中,触发器表示保存按钮rx\u点击,而流表示要保存的有效输入。我的问题是,当触发器完成时(销毁时),即使未点击,流也会被保存。好吧,sample确实会触发onCompleted 您可以在此处查找: 在您的情况下,它的效果与预期一样。 通常,当您在DisposeBag中添加observators时,它将在行李被处置时被处置。 例如:当ViewControllers或VIEWMODEL是deini
在我的例子中,
触发器
表示保存按钮rx\u点击
,而流
表示要保存的有效输入。我的问题是,当触发器完成时(销毁时),即使未点击,流也会被保存。好吧,sample
确实会触发onCompleted
您可以在此处查找:
在您的情况下,它的效果与预期一样。通常,当您在
DisposeBag
中添加observators
时,它将在行李被处置时被处置。例如:当ViewControllers或VIEWMODEL是
deinit
ed时
因此,解决方案就是不要调用onCompleted
来处理观察者
let stream = PublishSubject<Int>()
let trigger = PublishSubject<Void>()
stream.sample(trigger).subscribeNext { value in print("value \(value)") }
stream.onNext(5)
trigger.onCompleted()
stream.sample(trigger)
.subscribeNext { value in print("value \(value)") }
.addDisposableTo(disposeBag)
stream.onNext(5)