gpt4 book ai didi

swift - API 调用仅使用 RxSwift 执行一次

转载 作者:行者123 更新时间:2023-11-28 08:15:34 25 4
gpt4 key购买 nike

我的这段代码似乎是正确的。但它只会对第一次搜索更改使用react。所以代码只执行一次。我尝试将 concat(Observable.never()) 添加到我的 getAl 函数中,但它仍然只运行一次。我错过了什么 ?

exists = search.asObservable()
.throttle(0.3, scheduler: MainScheduler.instance)
.distinctUntilChanged()
.flatMapLatest { searchString -> Observable<Bool> in
guard !searchString.isEmpty else {
return Observable.empty()
}
return ServiceProvider.food.getAll(whereFoodName: searchString)
.flatMap({ (result) -> Observable<Bool> in
return Observable.just(result.count > 0)
})
}

最佳答案

您的代码只返回一个Observable。要使用它你应该观察它(或者更确切地说 subscribe 在 Rx 术语中)

你可能想要这样的东西:

search.asObservable()
.throttle(0.3, scheduler: MainScheduler.instance)
.distinctUntilChanged()
.subscribe(onNext: { searchString in
let exists = ServiceProvider.food.getAll(whereFoodName: searchString).count > 0
print("Exists: \(exists)")
// Or do whatever you want with `exists` constant
// You could call a method to update UI
if exists {
self.button.enabled = true
}
})
.disposed(by: disposeBag) //disposeBag should be your property which will be deallocated on deinit

关于swift - API 调用仅使用 RxSwift 执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42624179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com