Obsarvable.just()に気をつけろ!

適当な値でsubscribeしたい時justは便利ですが、動きを理解していないで使うのは危険です!

結論から言うとjustを使うとonNextとonCompleteがほぼ同時に帰ってきます。わかっていれば問題ないですが、わかっていないと私のようにハマります。

失敗例

こんな感じのコードを書いてしまっていました。

hogeメソッドを購読してる部分でonNextやonCompleteを省略してしまっていました。

この場合subscribeの中のprint文が2回呼び出されてしまします。

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        hoge().subscribe({ _ in
            print("呼ばれたよ!")
        })
    }
    func hoge() -> Observable<Int> {
        return Observable.just(1)
    }
}

こうしよう!

onNextを指定してやれば呼び出しは1回になります。onCompleteを増やすとそちらにも入ります。

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        hoge().subscribe(onNext:{ _ in
            print("呼ばれたよ!")
        })
    }
    func hoge() -> Observable<Int> {
        return Observable.just(1)
    }
}
デザインパターン

前の記事

Composite
デザインパターン

次の記事

Iterator