有没有办法不触发变量<t>的初始值?

时间:2017-04-19 15:42:33

标签: rx-swift

见下面的代码。

class ViewController4: UIViewController {
    var disposeBag = DisposeBag()
    let v = Variable(0)

    override func viewDidLoad() {
        super.viewDidLoad()

        v.asObservable()
            .subscribe(onNext: { print($0) })
            .disposed(by: disposeBag)

        v.value = 1
    }
}

当它运行时,它将打印

0
1

但是,我不希望它在0上运行,或者说0只是用于启动v的值。我能这样做吗?或者我必须在我使用它的时间点推迟代码?

1 个答案:

答案 0 :(得分:31)

您可以使用运算符.skip来抑制N个第一个元素已发出。所以在你的情况下,skip(1)会压缩init值。

  

http://reactivex.io/documentation/operators/skip

v.asObservable().skip(1)
        .subscribe(onNext: { print($0) })
        .disposed(by: disposeBag)

v.value = 1
//Output : 1

v.value = 2
v.value = 3
//Output : 1 2 3