Ios 动态改变油门参数
是否可以在运行时动态更改油门参数(在本例中为“30”)?或者我必须使用新的节流时间创建新订阅吗Ios 动态改变油门参数,ios,swift,rx-swift,frp,throttling,Ios,Swift,Rx Swift,Frp,Throttling,是否可以在运行时动态更改油门参数(在本例中为“30”)?或者我必须使用新的节流时间创建新订阅吗 let disposable = Observable.combineLatest(objectA.asObservable().skip(1), objectB.asObservable().skip(1)) .throttle(30,
let disposable = Observable.combineLatest(objectA.asObservable().skip(1),
objectB.asObservable().skip(1))
.throttle(30,
scheduler: ConcurrentDispatchQueueScheduler(qos: .background))
.subscribe(onNext: { [unowned self] _ in
self.update()
})
我的解决方案是处置当前订阅并创建一个具有新的所需节流时间的新订阅。但是有更好的解决方案吗?RxSwift的功能性、声明性本质倾向于根据需要使用新参数创建新的可观测/订阅,而不是动态更改现有可观测的节流参数 例如,为您的observable创建一个设置油门间隔的函数
func throttled(with interval: Double) -> Observable<({TYPE_OF_A}, {TYPE_OF_B})>
{
let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)
return Observable
.combineLatest(objectA.asObservable().skip(1),
objectB.asObservable().skip(1))
.throttle(interval,
scheduler: scheduler)
}
addDisposableTo(包)已弃用。使用处置(按:袋)instead@KaraBenNemsi-是的,你是对的。我更新了我的代码。
var bag: DisposeBag! = DisposeBag()
throttled(with: 30).subscribe(onNext: { _ in
self.update()
}).disposed(by: bag)
bag = DisposeBag()
throttled(with: 20).subscribe(onNext: { _ in
self.update()
}).disposed(by: bag)
bag = DisposeBag()
throttled(with: 10).subscribe(onNext: { _ in
self.update()
}).disposed(by: bag)