Rx Swift 简单计时器不起作用

0 timer observable rx-swift swift3

我在 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)
Run Code Online (Sandbox Code Playgroud)

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

tom*_*ahh 6

DisposeBag一旦超出范围,将处理您的订阅。在这种情况下,它会在调用 subscribe 之后立即出现,它解释了为什么您看不到任何打印到控制台的内容。

将 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)
  }
}
Run Code Online (Sandbox Code Playgroud)

附带说明一下,interval期望以秒为单位的间隔,因此它只会每隔几秒打一次,而不是毫秒。