【发布时间】:2021-07-28 13:45:53
【问题描述】:
我是 RxSwift 新手,我正在尝试执行以下操作,
- 用户类型是搜索UiTextField
- 应用必须在用户完成输入后等待 1 秒,以确保不会在按下每个字母写入或删除按钮时点击 Api。
- 应用点击我的 Api 进行搜索
我尝试了以下代码作为示例
class DestinationSearch: UIViewController {
let searchTF = UITextField()
var disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
setUpUI()
searchTF.rx.controlEvent(.editingChanged)
.throttle(.milliseconds(1000), scheduler: MainScheduler.instance)
.withLatestFrom(searchTF.rx.text)
.subscribe(onNext:{ query in
print(self.hitSomeApi(query: query ?? "--"))
}).disposed(by: disposeBag)
}
func hitSomeApi(query: String) -> String {
return query + " Response from API"
}
当我运行应用程序并开始输入时,我会收到 Response from API 消息,每个字母或退格按钮都被按下!为什么throttle 延迟不起作用?我在这里做错了吗?
任何帮助将不胜感激
【问题讨论】:
-
无法复制。
Response from API为我每秒钟打印一次,而不是每当我输入字母时。是不是打字太慢了? -
也许
debounce(而不是throttle)是您要找的?