RxSwift如何从流中获取最后一个值

时间:2017-05-29 19:11:28

标签: swift uitextfield rx-swift

我正在学习RxSwift,我想要的是获取机制,从text打印我UITextFied,但是在给定间隔后。

现在如何运作:当我输入第一个字符时,这个字符立即被打印出来(不是在延迟之后我的预期)并且如果我继续输入长句,则每两秒后打印text(作为间隔设置在油门),但我想只有最新的text值。

我的代码:

inputField.rx.text.orEmpty
        .throttle(2, latest: true, scheduler: MainScheduler.instance)
        .subscribe(onNext: { text in
            print("\(text)")
        }, onDisposed: nil)
        .addDisposableTo(disposeBag)

我正在寻找你的帮助Rx研究员:)谢谢

1 个答案:

答案 0 :(得分:8)

使用debounce代替throttle

来自debounce的文档:

  

忽略后面跟着的可观察序列中的元素   指定相对持续时间内的另一个元素,使用   指定的调度程序来运行限制计时器。

来自throttle的文档。

  

返回发出第一个和最新项目的Observable   在指定的连续时间窗口期间由源Observable   持续时间。