2017-02-15 17 views
0

我在SWIFT 3的Rx斯威夫特簡單的定時器不工作

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) 

我運行時按鈕拍了拍這個代碼這個RxSwift代碼,但它不是打印在控制檯上任何東西。

回答

3

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預計秒的間隔,從而爲oposed到毫秒只會每秒打勾。

+0

感謝它的正常工作。 –