Swift iOS ReactiveKit: вызов обозревателя вызывает запуск действия несколько раз? - PullRequest
0 голосов
/ 19 октября 2018

У меня есть класс Singleton, к которому я привык наблюдать свойство и запускать следующее действие.

Класс 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).

Эта проблема связана с моим одноэлементным шаблоном проектирования или наблюдаем далее , вызывающим несколько раз.(BridgeDispatcher.sharedInstance.onPopCurrentViewController.observeNext{} )

Need help.
...