如何使用 RxSwift Observable<Int>.interval?
Posted
技术标签:
【中文标题】如何使用 RxSwift Observable<Int>.interval?【英文标题】:How to use RxSwift Observable<Int>.interval? 【发布时间】:2017-09-25 04:19:56 【问题描述】:我正在尝试以给定的时间间隔在“脉冲”上发出序列。对所有 Rx 来说都是全新的,但认为这样做可以:
import RxSwift
let db = DisposeBag()
_ = Observable<Int>.interval(1.0, scheduler: MainScheduler.instance)
.debug("interval")
.subscribe(onNext:
print($0)
)
.addDisposableTo(db)
但它只输出:
2017-09-25 06:12:41.161: interval -> subscribed
仅此而已。我在这里不明白什么?
【问题讨论】:
你的垃圾袋的寿命是多少 -db
?不使用此行重试:.addDisposableTo(db)
现在试过了。不管有没有.addDisposable
,它似乎都不会发出任何东西。我现在已经在我的操场上添加了完整的代码。处置袋应该是活的。
这真的很奇怪,因为这段代码对我有用
你使用什么版本的 RxSwift?
我认为它是最新的,我的 Podfile 中有这个:pod 'RxSwift', '~> 3.0'
【参考方案1】:
您的代码没有任何问题。处置袋应该是活的。但是,一旦运行最后一条指令,操场执行就会结束,因此会出现问题。
为了让 Playground 在所有内容执行完毕后继续运行,您必须导入 PlaygroundSupport
并告诉页面继续运行:
import RxSwift
import PlaygroundSupport
let db = DisposeBag()
Observable<Int>.interval(1.0, scheduler: MainScheduler.instance)
.debug("interval")
.subscribe(onNext:
print($0)
)
.addDisposableTo(db)
PlaygroundPage.current.needsIndefiniteExecution = true
【讨论】:
在 RxSwift5 中:Observable<Int>.interval(.seconds(1.0), scheduler: ...
如何停止这个计时器?
您创建var timerDisposable: Disposable?
的实例并将Observable<Int>.interval(.seconds(1.0), scheduler: ...
的输出返回到timerDisposable
。最后你可以通过调用timerDisposable?.dispose()
来停止计时器。以上是关于如何使用 RxSwift Observable<Int>.interval?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Observable.create (RxSwift) 中返回/转发一个 observable
在 RxSwift 中,我如何对 observable 未发送任何事件进行单元测试?
使用 Observable 绑定 BehaviorRelay - RxSwift