Rx Swift简单计时器无法正常工作

时间:2017-02-15 07:00:55

标签: timer swift3 observable rx-swift

我在swift 3中有这个RxSwift代码

let bag:DisposeBag = DisposeBag()
var sig:Observable<Int>!
sig = Observable<Int>.interval(1.0, scheduler: MainScheduler.instance)

sig.subscribe(onNext: { (milsec) in
    print("Mil: \(milsec)")
}).addDisposableTo(bag)

我在按下按钮时运行此代码,但它不会在控制台上打印任何内容。

1 个答案:

答案 0 :(得分:4)

一旦超出范围,

DisposeBag将处理您的订阅。在这种情况下,它将在订阅调用之后,它解释了为什么你没有看到打印到控制台的任何内容。

将dispose bag的定义移到创建订阅的类中,一切都应该正常工作。

class MyViewController: UIViewController {
  let bag:DisposeBag = DisposeBag()

  dynamic func onButtonTapped() {
    var sig:Observable<Int>!
    sig = Observable<Int>.interval(1.0, scheduler: MainScheduler.instance)

    sig.subscribe(onNext: { (sec) in
        print("Sec: \(sec)")
    }).addDisposableTo(bag)
  }
}

在旁注中,interval需要一个以秒为单位的间隔,因此它只会在每秒钟内选择为毫秒。