我有Singleton类,用于观察属性并触发下一个操作。
单身阶级:
public class BridgeDispatcher: NSObject {
open var shouldRespondToBridgeEvent = SafePublishSubject<[String: Any]>()
open var shouldPop = SafePublishSubject<Void>()
open var shouldUpdate = SafePublishSubject<Void>()
public let disposeBag = DisposeBag()
open static let sharedInstance: BridgeDispatcher = BridgeDispatcher()
override init() {
super.init()
shouldRespondToBridgeEvent.observeNext { event in
if let type = event["type"] as? String {
switch type {
case "ShouldUpdate":
self.onShiftBlockDidUpdateHeight.next()
case "shouldPop":
self.onPopCurrentViewController.next(())
default:
print("Event not supported")
}
}
}.dispose(in: self.disposeBag)
}
}上面的方法将通过调用:
BridgeDispatcher.sharedInstance.shouldRespondToBridgeEvent.next(body)注册onPopCurrentViewController:
BridgeDispatcher.sharedInstance.onPopCurrentViewController.observeNext { doSomething() }.dispose(in: BridgeDispatcher.sharedInstance.disposeBag)在我的应用程序中,由于业务逻辑,BridgeDispatcher.sharedInstance.onPopCurrentViewController.observeNext{}方法将被多次调用,因此doSomething()方法在调用BridgeDispatcher.sharedInstance.shouldRespondToBridgeEvent.next(body)时将触发多次。
是我的单例设计模式或observeNext多次调用的问题吗?(BridgeDispatcher.sharedInstance.onPopCurrentViewController.observeNext{} )
Need help.发布于 2020-03-02 12:32:55
我在ObservableComponent上使用过ObservableComponent。
valueToUpdate.updateSignal.compactMap { (arg0) -> String? in
let (value, _, validationFailure) = arg0
return validationFailure == nil ? value?.value : nil
}
.removeDuplicates()
.debounce(for: 1.0)
.observeNext { [unowned self] _ in
self.doYourWork()
}
.dispose(in: self.bag)它尝试以两种方式处理多个调用:第一,放弃任何重复事件,因此,如果持续时间没有改变,那么就不会进行调用。其次,通过取消信号,所以如果用户做了大量的更改,我们只在他们完成更改时调用该方法。
https://stackoverflow.com/questions/52886901
复制相似问题