現在subscribeしているかどうかを確認する方法はありますでしょうか
これはないと思います。
というのも、 subscribeは定義のように書くべきで、初期化時などに一度だけ実行する想定がされているからだと思います。
言い換えると、同じオブジェクトの中で何度も同じ subscribe が実行する書き方は想定されてないものという意味です。
例えば ViewController で書くのであれば、
swift
1func viewDidLoad() { // ViewController なら viewDidLoad はライフサイクルで一度しか呼ばれない
2 // ...
3
4 // 例えば ViewController の初期化時に1度だけ実行するなら
5 deviceRepository?.observableLogoutStatus?
6 .subscribe({ event in /* ... */ })
7 .disposed(by: disposeBag)
8
9 // ボタンのタップによって実行するなら
10 buttonView.rx.tap.asDriver()
11 .flatMapLatest { _ in deviceRepository?.observableLogoutStatus }
12 .drive { event in /* ... */ }
13 .disposed(by: disposeBag)
14
15 // その他イベント ( BehaviorRelay や PublishRelay等 ) によって実行する
16 behaviorRelay
17 .flatMapLatest { _ in deviceRepository?.observableLogoutStatus }
18 .subscribe { event in /* ... */ }
19 .disposed(by: disposeBag)
20}
のように、イベントに対して flatMapLatest
するように書けば、初期化時に1度だけ subscribe
すればよいという風になります。
また、そのような書き方こそが宣言的で読みやすいコードとなるので、 RxSwift を利用するメリットになっているのかと思いますmm
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/26 23:35